【发布时间】:2012-08-29 01:59:35
【问题描述】:
当我调用一个过程时,我需要一个通用的方法来获取运行时参数(值)的列表。我需要类似于 $$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.
我不满意,因为我无法复制和粘贴所有程序,因为我必须对每个程序进行硬编码以设置其正确的参数变量。
提前感谢您的帮助。
【问题讨论】:
-
是的,我认为这是同一个问题。两者都没有答案:(我认为没有办法获取参数的值:(
-
我不认为这是同一个问题。您在不知道参数名称的情况下询问参数的 value。正如现在已删除的答案和链接问题中指出的那样,找到参数的名称很容易,但不是该参数的值。
-
@LucaVaccaro 不确定我是否完全理解。只需检查参数变量本身即可找到“参数值”,就像您在上面的 MY_PROC 示例中所做的那样(“ow”和“tn”包含参数值)。你能更清楚你想做什么吗? Tks
-
@tbone 是的,我做到了,但它仅适用于 MY_PROC。想想 MY_PROC2 MY_PROC3、MY_PROC4,其中任何过程都有自己的参数(例如 MY_PROC2(IN 所有者、IN 表);MY_PROC3(IN 索引、IN ow、IN 表);MY_PROC4(IN idx、IN own、IN t、IN 部分) ). 你怎么看,我得把我的trace写到每一个过程中,注意参数名的准确。我不能复制粘贴。就这样。
标签: oracle stored-procedures parameters plsql oracle10g