【发布时间】:2020-03-04 18:54:43
【问题描述】:
我不仅需要动态调用存储过程,还需要动态地将参数传递给该存储过程。
参数来自ALL_ARGUMENTS 表,它是 Oracle 数据字典表。这些论点将根据rpt_wrapper_name 而有所不同。
例如 sp1 如下所示:
sp1 (v1, v2, v3)
存储过程sp2 如下所示:
sp2 (v1, v2, v3, v4, v5)
存储过程sp3 将如下所示:
sp3 (v1, v2, v3, v4, v5, v6, v7,...)
目前我正在尝试动态 SQL 调用,但这对我不起作用
EXECUTE IMEDIATE 'BEGIN ' || p_Rpt_wrapper_name|| '(' || p_ParamList || ') ; END;'
Using p_ParamListUsing;
where
p_ParamList := :v1,:v2,:v3
p_ParamListUsing:= v1,v2,v3
错误:
并非所有变量都绑定 ORA-01008
参数列表将根据rpt_wrapper_name而有所不同
我们怎样才能做到这一点?请帮忙
【问题讨论】:
-
试试这样的:立即执行'begin'|| p_Rpt_wrapper_name||'('||v1||','||v2||....||');结束;'。
-
@gsalem:你的意思是不要使用 using 子句?静态参数传递对我有用,但我想要动态参数传递..
-
我看不出像您所定位的动态传递将如何工作。
标签: oracle plsql plsql-package