select aac817 into :olddata from agzk where agzk.aac001 =:bh_read;
這條陳述句單獨使用能使olddata得到值
但是把它放到sqltxt里執行得到的olddata總是0,如下
sqltxt = "select aac817 into :olddata from agzk where agzk.aac001 =:bh_read;"
Execute Immediate :sqltxt;
這是怎么回事呢?
uj5u.com熱心網友回復:
如果要動態執行sql陳述句,不能將宿主變數寫到陳述句中,需要在執行時外傳或回傳。請仔細看看在線幫助:dunamic sql format 3 sql statmentuj5u.com熱心網友回復:
sqltxt = "select aac817 into :olddata from agzk where agzk.aac001 =:bh_read;"可以使用游標來取值。
另外定義有變數的sql 陳述句時不能直接用“”把變數名稱也括起來的。需要拆分開,不然怎么給變數賦值。
uj5u.com熱心網友回復:
是這樣嗎?sqltxt = "select aac817 into :olddata from agzk where agzk.aac001 =" +bh_read+";"
可是這樣也得到的是0而不是表中的值
幫助都是E文的,看不懂唉
uj5u.com熱心網友回復:
這樣的語法什么地方應該修改呢?
sqltxt = "select aac817 into from agzk where agzk.aac001 =" +bh_read+";"
Execute Immediate :sqltxt into :olddata;
uj5u.com熱心網友回復:
學PB得學會看英文幫助的。
Example
Assume the SingleLineEdit sle_1 contains the state code for the retrieval:
// Declare cursor emp_curs for employee table
// retrieval.
DECLARE emp_curs CURSOR FOR
SELECT emp_id, emp_name FROM EMPLOYEE
WHERE emp_state = :sle_1.text;
// Declare local variables for retrieval.
string emp_id_var
string emp_name_var
// Execute the SELECT statement with
// the current value of sle_1.text.
OPEN emp_curs;
// At this point, if there are no errors,
// the cursor is available for further
// processing.
uj5u.com熱心網友回復:
自己學會除錯,可以用訊息框把轉換后的腳本顯示出來,就很容易看出SQL陳述句有沒有問題,又問題該如何改了uj5u.com熱心網友回復:
四樓:SELECT emp_id, emp_name FROM EMPLOYEE
WHERE emp_state = :sle_1.text;
上面這句,我想把欄位名emp_id,emp_name和表名EMPLOYEE都用引數表示怎么辦?
欄位名用字符變數updatefield表示,表名用字符變數tablename表示,怎么改呢?
我一改就出錯。
uj5u.com熱心網友回復:
string ls_sql,ls_updatefield1,ls_updatefiled2,ls_wherefiled,ls_tablename
ls_updatefield1='emp_id'
ls_updatefiled2='emp_name'
ls_wherefiled='emp_sate'
debugbreak()
ls_sql="Select "+ ls_updatefield1+","+ls_updatefiled2+" from "+ls_tablename+" where "+ls_wherefiled+"='"+sle_1.text+"'";
uj5u.com熱心網友回復:
這段代碼也是在游標里嗎?uj5u.com熱心網友回復:
into 應該用游標,不應再動態sql里面uj5u.com熱心網友回復:
可能是查詢的結果不只一條記錄,加上 top 1 后試試uj5u.com熱心網友回復:
看不懂英文,怎么搞程式。。
uj5u.com熱心網友回復:
用動態sql給一個獲得字符型回傳的函式例子。要取其它型別的,自己改一下
------------------
$PBExportHeader$f_getsqlstring.srf
global type f_getsqlstring from function_object
end type
forward prototypes
global function string f_getsqlstring (string as_sql)
end prototypes
global function string f_getsqlstring (string as_sql);string rn
prepare sqlsa from :as_sql;
describe sqlsa into sqlda;
declare myprc dynamic procedure for sqlsa;
execute dynamic myprc using descriptor sqlda;
fetch myprc using descriptor sqlda;
close myprc;
rn = getdynamicstring(sqlda,1)
if isnull(rn) then rn = ''
return rn
end function
uj5u.com熱心網友回復:
sqltxt = "select aac817 into :olddata from agzk where agzk.aac001 =" + bh_read(假如bh_read為字符型變數)Execute Immediate :sqltxt;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/71834.html
標籤:腳本語言
