【发布时间】:2018-03-28 21:20:34
【问题描述】:
我有以下过程,我需要在其中接受架构名称。该程序将 仅在该架构中执行。
CREATE OR REPLACE PROCEDURE my_procedure() AS
BEGIN
FCSCHEMA VARCHAR2(20) := :SCHEMA; --How to accept the parameter and pass it on to below code.
result := FCSCHEMA.my_package.my_function(p_param1);
END;
/
目前我收到PLS-00049: bad bind variable 'SCHEMA' 错误。
【问题讨论】:
-
passing in table name as plsql parameter 的可能重复项。同样的方法适用于任何东西 - 架构名称、表名称、列名称等。
-
@Dmitry,动态调用函数与选择表完全不同。
-
架构是您在编译过程时尝试指定一次的东西,还是每次调用过程时都可以更改的东西?
-
@AlexPoole 是在编译过程的时候。
-
那么使程序体动态化并没有什么意义;要么在编译之前更改过程主体以硬编码要引用的模式(而不是将其硬编码在变量中!?),或者如果你通过例如运行它SQL*Plus 可以在编译期间使用替换变量来提供模式名称吗?
标签: oracle plsql parameter-passing