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

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