调用过程时,我需要一种通用方法来获取运行时参数(值)的列表。我需要类似于$$ PLSQL_UNIT的东西,它返回正在运行的过程的名称。
(plsql Oracle 10g)
例如。看一下这个示例过程:
(它只是打印自己的名称和参数)
CREATE OR REPLACE PROCEDURE MY_PROC(ow in varchar2, tn IN varchar2)
IS
BEGIN
dbms_output.put_line('proc_name: '||$$PLSQL_UNIT||' parameters: '|| ow||' '||tn );
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERRORE: ' ||SQLERRM);
END MY_PROC;
/
运行过程将产生以下输出:
SQL>
1 BEGIN
2 IBAD_OWN.MY_PROC('first_par', 'second_par');
3 END;
4 /
proc_name: MY_PROC parameters: first_par second_par
PL/SQL procedure successfully completed.
我不满意,因为无法复制和粘贴所有过程,因为我必须对每个过程进行硬编码以设置正确的参数变量。
先谢谢您的帮助。
最佳答案
无法动态检索传递给Oracle PL/SQL中的过程的参数的值。该语言根本不是为处理这种操作而设计的。
顺便说一句,在包中的某个过程中,$$PLSQL_UNIT
将仅返回包的名称。我发现最好在每个包含过程名称的过程中定义一个统一命名的常量。
关于甲骨文plsql : retrieve runtime parameter values when you call a procedure,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12262974/