PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
907 | 98/03/18 16:02:55 | RE(4):埋め込みSQLが駄目なら、動的SQLがあるさっ! By ふくちゃん |
905 | 98/03/18 15:53:19 | RE(3):埋め込みSQLが駄目なら、動的SQLがあるさっ! By M.M |
904 | 98/03/18 14:47:09 | RE(2):PowerScriptでは対応していないようです By ふくちゃん |
903 | 98/03/18 13:14:28 | RE(1):PowerScriptでは対応していないようです By てとらぽっと |
902 | 98/03/18 11:45:24 | DELETE文についての質問です。 By ふくちゃん |
カテゴリ:旧電子会議室
日付:1998年03月18日 15:53 発信者:M.M
題名:RE(3):埋め込みSQLが駄目なら、動的SQLがあるさっ!
>>DELETE文のWhere句で配列は指定する事はできないのでしょうか?
>>行いたい処理の例としては
>>
>>DELETE FROM \"社員マスタ\"
>>WHERE \"社員マスタ\".\"社員番号\" IN :ls_syain[];
>>
>>みたいな感じで不特定な社員数に対してDELETE文を流したいのですが
>>DELETE文での配列は使用できないのでしょうか・・・。
>ふくちゃんさん、こんにちは。
>ORACLEでは配列ホスト変数を使うことにより、
>
>配列読み = FETCHのINTO句に配列変数を使用
>配列条件 = WHERE句に配列変数を使用
>
>できます。
>しかし! どうやらPowerScriptではSQL構文中の配列に対応していないようです。
>残念ながら。(^^;
「テトラポット」さんのコメントにあるように、埋め込みSQL文では配列のホスト変数を使用できないようです。
しかし、埋め込みSQL文が駄目なら、動的SQL文があります!
とりあえず、サンプルを載せますので、確かめて下さい。
(PowerBuilder5.0.03+SQL Anywhereの環境で確認)
???????????????????????????????????
//初期設定
long ll
string ls_sql, ls_in
string ls_syain[]
ls_syain[1] = \"10\"
ls_syain[2] = \"20\"
ls_syain[3] = \"30\"
//IN句の設定
ls_in = \"\"
for ll=1 to UpperBound(ls_syain)
ls_in=ls_in + ls_syain[ll]+ \",\"
next
ls_in = left(ls_in, len(ls_in) -1) /* 最後のカンマは削除 */
//動的SQL文の定義
ls_sql = \'DELETE FROM \"社員マスタ\" WHERE \"社員マスタ\".\"社員番号\" IN(\'
ls_sql = ls_sql + ls_in
ls_sql = ls_sql + \");\"
//動的SQL文実行
EXECUTE IMMEDIATE :ls_sql;
if SQLCA.SQLCode=0 then
COMMIT;
else
ROLLBACK;
end if
???????????????????????????????????
追伸:HTMLのタグを使ってしまいました。う?ん、これはクセになりそう。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.