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语句? –