PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
13490 00/10/06 15:10:20 RE(4):PB6: アポストロフィの扱い(解決) By t.y
13488 00/10/06 14:02:01 RE(3):PB6: アポストロフィの扱い -> Find関数の場合 By Taka
13485 00/10/06 10:23:58 RE(2):PB6: アポストロフィの扱い -> 動的SQLはいい感ぢなのですが By t.y
13483 00/10/06 01:03:51 RE(1):PB6: アポストロフィの扱い -> 動的SQL・書式2 By Taka
13465 00/10/05 11:08:19 PB6: アポストロフィの扱い By t.y

カテゴリ:スクリプトの記述
日付:2000年10月06日 01:03 発信者:Taka
題名:RE(1):PB6: アポストロフィの扱い -> 動的SQL・書式2

t.yさん、おはようございます。

>sle_name.Text = \"AA\'BB\"  //と入っているとします。
>str = sle_name.Text 
>sql = \"update TBL set A1 = \'\" + str + \"\' where B1 = 100 \"

これって、静的SQLで
 update TBL set A1 = :str where B1 = 100;
と直接書けるんじゃない?...と言おうと思ったけど、たぶん動的にテーブル名やWHERE句などが
変わるんですよね。

この場合は、動的SQLの書式2を使うと良いでしょう。
以下サンプルでし。

string ls_a1
int li_b1

ls_a1 = sle_name.Text
li_b1 = 100

PREPARE SQLSA FROM \"update TBL set A1 = ? where B1 = ?\";
EXECUTE SQLSA USING :ls_a1, :li_b1;

文字列内の ? が、USINGで与える変数でバインドされます。
(文字列そのものが置換される訳ではないという点が違います)
? が複数ある場合、先頭から出てきた順に合わせてUSINGリストに記述します。

これで試してみてください。


>1.テーブルの更新はなにがなんでもDWを使用する(動的SQLは使用しない)

>動的SQLを使用したPGはかなりある為、いまさら方法1は使えません。

作り方を工夫すれば、データウィンドウやデータストアのほうが楽なんですけどね。(^^;
動的SQLでやるにしても、関数を汎用化するなどしてコーディング量を減らすようにしましょう。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS INFORMIX Net 7
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS INFORMIX-OnLine 7
WebServer (記載なし)

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