0
A
回答
2
有execute immediate 'plsql code'
和execute immediate 'sql'
之間的differnce,在動態PL/SQL oracle會使用真實bindes,你可以以正確的順序指定一次,它會取代所有的綁定,如果有repeted 。與SQL你應該spesify所有綁定,而不是重複它。
declare
l_sql varchar2(4000) := 'select :a from dual union all select :a from dual';
l_pl_sql varchar2(4000) := 'begin dbms_output.put_line(:a); dbms_output.put_line(:a); end;';
type t_tab_str is table of varchar2(4000);
l_res t_tab_str ;
begin
execute immediate l_sql bulk collect into l_res using '1','2';
for i in 1.. l_res.last loop
dbms_output.put_line(l_res(i));
end loop;
execute immediate l_pl_sql using '1';
end;
您可以使用DBMS_SQL和它的功能綁定
declare
l_sql varchar2(4000) := 'select :a from dual union all select :a from dual';
type t_tab_str is table of varchar2(4000);
l_res t_tab_str ;
l_sql_id number;
l_ret number;
type curtype is ref cursor;
l_cursor curtype ;
begin
dbms_sql.parse(l_sql_id ,l_sql,dbms_sql.native);
dbms_sql.bind_variable(l_sql_id,'a','1');
l_ret := dbms_sql.execute(l_sql_id);
l_cursor := dbms_sql.to_refcursor(l_sql_id);
fetch l_cursor bulk collect into l_res;
for i in 1.. l_res.last loop
dbms_output.put_line(l_res(i));
end loop;
end;
1
在我看來,你是什麼後USING
關鍵字。
下面是來自oracle文檔的示例。
DECLARE
plsql_block VARCHAR2(500);
new_deptid NUMBER(4);
new_dname VARCHAR2(30) := 'Advertising';
new_mgrid NUMBER(6) := 200;
new_locid NUMBER(4) := 1700;
BEGIN
-- Dynamic PL/SQL block invokes subprogram:
plsql_block := 'BEGIN create_dept(:a, :b, :c, :d); END;';
/* Specify bind arguments in USING clause.
Specify mode for first parameter.
Modes of other parameters are correct by default. */
EXECUTE IMMEDIATE plsql_block
USING IN OUT new_deptid, new_dname, new_mgrid, new_locid;
END;
/
https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm
相關問題
- 1. SQL中的動態變量名稱
- 2. {{}}中綁定或嵌套{{}}中的動態變量名稱
- 3. 動態變量名稱Coldfusion
- 4. 動態變量名稱EL
- 5. 動態名稱變量
- 6. 動態變量名稱
- 7. 動態變量名稱
- 8. 動態變量名稱Javascript
- 9. 動態JavaScript變量名稱
- 10. PHP動態變量名稱
- 11. Ruby動態變量名稱
- 12. SQL:動態變量名
- 13. PLSQL不是所有的變量綁定
- 14. 動態變量名稱 - 變化
- 15. 按列名稱分組的SQL變量
- 16. Monodroid綁定更改變量名稱
- 17. PLSQL開發綁定變量等作爲Oracle SQL Developer中
- 18. 按名稱自動綁定視圖
- 19. plsql中的動態%rowtype變量
- 20. PHP將動態變量名稱修改爲靜態變量名稱
- 21. Golang綁定變量的動態數量
- 22. PLSQL綁定變量和主機變量之間的區別
- 23. 綁定到不是合法的C#變量名稱的名稱
- 24. sas中的動態變量名稱
- 25. 動態名稱結構變量C
- 26. Jquery Json動態變量名稱生成
- 27. R:動態變量名稱比較
- 28. 如何使用動態變量名稱?
- 29. Javascript中的動態變量名稱
- 30. SAS:動態設置變量名稱
'我想執行一個SQL語句dynamically'什麼樣的SQL語句? –