oracle plsql:在调用过程时检索运行时参数值

tor*_*one 5 oracle parameters plsql stored-procedures oracle10g

在调用过程时,我需要一个通用方法来获取运行时参数(值)的列表.我需要类似于$$ 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;
/
Run Code Online (Sandbox Code Playgroud)

运行过程产生以下输出:

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.
Run Code Online (Sandbox Code Playgroud)

我不满意,因为我不能复制和粘贴我的所有程序,因为我必须硬编码每个程序来设置他们正确的参数变量.

在此先感谢您的帮助.

All*_*lan 2

无法动态检索传递给 Oracle PL/SQL 中过程的参数值。该语言根本就不是为处理此类操作而设计的。

顺便说一句,在位于包内的过程中,$$PLSQL_UNIT将仅返回包的名称。我发现最好在每个包含过程名称的过程中定义一个名称一致的常量。