PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
13665 | 00/10/23 10:54:48 | RE(2):PB5.0.03: 動的SQLでUPDATEBLOB By SHIMA |
13660 | 00/10/20 23:00:31 | RE(1):PB5.0.03: 動的SQLでUPDATEBLOB By ryochan |
13650 | 00/10/20 17:48:09 | PB5.0.03: 動的SQLでUPDATEBLOB By SHIMA |
カテゴリ:スクリプトの記述
日付:2000年10月20日 23:00 発信者:ryochan
題名:RE(1):PB5.0.03: 動的SQLでUPDATEBLOB
SHIMAさん、こんばんは。
>//テーブルt_imageのカラムblob_data_imageはimage型です。
>//imageカラムに設定したいblob型の変数を引数として与えます。
>ls_sqltext = &
>\"UPDATEBLOB t_image SET t_image.blob_data_image = ? WHERE t_image.blob_key = 7\"
>PREPARE SQLSA FROM :ls_sqltext;
>EXECUTE SQLSA USING :lbob_blobdata;
>image型のカラムについては、SELECTBLOB、UPDATEBLOBを使用する事は理解しているのですが、
>これを動的SQLにすると、実行時に以下の様なエラーになってしまいました。
>「\'t_image\' は、オプション として認識できません。」
実行時に生成されたUPDATEBLOB文のSQLが
そのままDBに渡っている気がします。
(Sybaseには「UPDATEBLOB」なんていう句は存在しない)
その為、実行させようとした
SQL文内の「SET」をSETコマンド
(例えば SET QUATEDIDENTIFER ONの様な)
と勘違いして、その後の\'t_image\'のオプションは存在しない
というエラーだと思われます。
isqlで「UPDATEBLOB テーブル名 SET XXX」
と行ったら、同様のエラーが出ました。
推測なのですが、埋め込みSQLのUPATEBLOBというのは
実はUPDATE文を投げていて、
このUPATEBLOBを使用することによって、
転送させるデータを
バイナリデータとしてバインドさせるため
正常に更新されるのだと思います。
動的SQLはバインドできないのではないでしょうか?
単に変数の値で置換しているような気もします。
「?」を使用するなんてマクロっぽくて非常にあやしい
と思いません?
これらは動きを見て推測した発言なので、
間違っていたら指摘してください。
因みに、T-SQLではWritetextコマンドを使うのですが
サーバ上のファイルとかを読み込むのならいいのですが
クライアントデータを吸い上げて行うのはもちろん無理なので
使えません。(使用したこともありませんが)
すみません、回避策は私も分かりません。
(できない、できないばかりいってすみません^^;)
動的でないとマズイですか?
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS Sybase Open Client/C 11
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Sybase SQL Server System 11
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.