當表名與列名在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,這樣通過乙個固定的中間表完成了此項工作
PB呼叫動態SQL語句
轉截自 原文解釋的比較詳細 本文只做以後用到的時候方便查詢 第一種 這種型別的動態sql語句經常用來執行ddl或者資料庫專用的其他sql語句。語法格式是 execute immediate sqlstatement 其中sqlstatement是個字串,其內容是有效的sql語句 transactio...
PB動態SQL語句執行應用
decimal c value integer li returns datetime ldt date string ls date ldt date adt date string ls sqlstring ls sqlstring select isnull colname 0 from se...
pb在資料庫中訪問blob型別資料
一 首先要寫好兩個函式,分別是檔案的讀取與寫入 參考 pb中讀寫檔案的函式 二 儲存檔案 li value getfileopenname 選擇檔案 ls docname,ls named if li value 1 then if f readfile lb fj,ls docname 1 the...