PB中動態SQL處理BLOB的方式

當表名與列名在SQL執行之前都是未知的時候,我仍然象平時一樣用動態的SQL去操作,結果卻總是報錯,原來PB中不支持動態的selectblob這樣的語句。後來····中間過程就不說了,既浪費自己時間也浪費大家時間。

 

找到了一個笨辦法,原理是:在表與表之間交換數據,不管是什麼類型都不需要使用selectblob這樣的PB特有語法,直接用SQL就行了。

這裏就對selectblob舉個例,更新與插入就不講了,方法類似

 

1、建立一箇中間表,固定表名,如wrblob(int id,blob fblob)

2、先用動態SQL將BLOB讀到這個表中,其實是個插入語句:

insert into wrblob(id,fblob) values( id, select fblob from 表名 where 主鍵 = ?);

記住寫入wrblob表中的id一定要是唯一值,不會重複的,可以預先得到這樣一個值,本句是可以用EXECUTE  IMMEDIATE  動態執行的

3、然後用selectblob fblob into :lb_blob from wrblob where id = ?;  取得需要讀取的值

4、收尾工作,需要刪除此行數據,delete from wrblob where id =?;

 

OK,這樣通過一個固定的中間表完成了此項工作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章