說明:table1里有5個欄位,T,T1,T2,T3,T4 ;A和B,STR,ls_sql 是變數,
代碼里面有一個這樣的一個動態陳述句:
ls_sql = "select " + aa + " into :bb " + " from table1 where t = " + "'" + ls_str + "'"
EXECUTE IMMEDIATE :ls_sql;
sqlca.autocommit = false
commit;
///
關鍵是這個 A 是一個變數,是從別的地方取的一個字串,取出來的字串可能是 T1或 T2或 T3或 T4,但是只可能是某一個,是table1的一個欄位名,現在就是要取table1的這個欄位里的值。
比如,這個AA取得的值是 “T2”,那執行的SQL應該是: select t2 into :bb from table1 where t = :ls_str;
但是用上面的寫法,變數b是得不到值 。
應該是用動態SQL吧,要怎么寫?
uj5u.com熱心網友回復:
查一下 syntaxfromsql() 方法,可以通過拼接的SQL 來建DW 或DS
uj5u.com熱心網友回復:
非要用動態SQL 的話,查閱一下動態SQL3或4uj5u.com熱心網友回復:
照著格式改
integer Emp_id_var
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;
PREPARE SQLSA FROM "SELECT emp_id FROM employee" ;
OPEN DYNAMIC my_cursor ;
FETCH my_cursor INTO :Emp_id_var ;
CLOSE my_cursor ;
uj5u.com熱心網友回復:
Datastore lds_i
String ls_sql,ls_syntax
int i
lds_i = CREATE datastore
ls_sql = "select " + aa + " from table1 where t = '" + ls_str + "'"
ls_syntax = sqlca.Syntaxfromsql(ls_sql,'style(type=grid)',ls_error)
lds_i.Create(ls_syntax,ls_error)
lds_i.SetTransObject(sqlca)
lds_i.Retrieve()
for i = 1 to lds_i.rowcount() //遍歷T1234結果集
bb = lds_i.getitemstring(i,aa)
next
uj5u.com熱心網友回復:
我覺得是可行的轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/80611.html
標籤:腳本語言
