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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.