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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.