PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
7054 99/07/08 09:56:04 RE(9):PB6.5: 動的SQLで、FROM句を動的に変えるには? By junk
7051 99/07/07 20:43:01 RE(8):PB6.5: 動的SQLで、FROM句を動的に変えるには? By M.M
7047 99/07/07 18:49:59 RE(7):PB6.5: 動的SQLで、FROM句を動的に変えるには? By Taka
7045 99/07/07 17:27:21 RE(6):PB6.5: 動的SQLで、FROM句を動的に変えるには? By てとらぽっと
7044 99/07/07 17:08:03 RE(5):PB6.5: 動的SQLで、FROM句を動的に変えるには? By HFintegrale
7042 99/07/07 16:31:26 RE(4):PB6.5: 動的SQLで、FROM句を動的に変えるには? By junk
7034 99/07/07 12:31:40 RE(3):PB6.5: 動的SQLで、FROM句を動的に変えるには? By HFintegrale
7031 99/07/07 10:59:00 RE(2):PB6.5: 動的SQLで、FROM句を動的に変えるには? By junk
6986 99/07/05 13:14:39 RE(1):PB6.5: 動的SQLで、FROM句を動的に変えるには? By M.M
6984 99/07/05 12:05:28 PB6.5: 動的SQLで、FROM句を動的に変えるには? By junk

カテゴリ:スクリプトの記述
日付:1999年07月07日 20:43 発信者:M.M
題名:RE(8):PB6.5: 動的SQLで、FROM句を動的に変えるには?

junkさん、HFintegraleさん、こんばんは。

>その後、スクリプトを変えて試してみたところ、
>FROM 句に ? を使うとこの現象が起きることがわかりました。

>ちょっと記述が乱暴ですが、自分で記述したスクリプトをもとに
>例を書いてみます。

>例1 (OK)
>ls_prod = THIS.GetItemString(row, \'pc\')
>ls_sqlStatement = \"SELECT KANJI_NAME FROM SCHEMA.TABLE WHERE PC = ?\"
>DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA; 
>PREPARE SQLSA FROM :ls_sqlStatement;
>OPEN DYNAMIC my_cursor USING :ls_prod;
>FETCH my_cursor INTO :ls_kanji;
>CLOSE my_cursor;
>IF SQLCA.SQLCode = 0 THEN
>   << 略 >>
>ELSE
>   MessageBox(\"Check\", \"SQLCode = \" + String( SQLCA.SQLCode ) + \' \' + ls_err_text )
>END IF

>例2 (NG)
>ls_prod = THIS.GetItemString(row, \'pc\')
>ls_table = \'SCHEMA.TABLE\'
>ls_sqlStatement = \"SELECT KANJI_NAME FROM ? WHERE PC = ?\"
>DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA; 
>PREPARE SQLSA FROM :ls_sqlStatement;
>OPEN DYNAMIC my_cursor USING :ls_table, :ls_prod;
>FETCH 以下同じ

>SQLErrTextは、「ストアドプロシージャが実行されていないか、結果が得られませんでした。」です。

>手動発行したSQL文は、次のとおりです。
>SELECT KANJI_NAME FROM SCHEMA.TABLE WHERE PC = \'***\';

Takaさん、てとらぽっとさんのコメントにありますとおり、動的SQLの書式3では、from句で\"?\"の
指定はできないのが正しい動作のようです。
混乱させてしまい、お詫びいたします。(m○m)

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows98
DBMS DBMSクライアントソフトウェアなし
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)

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