Oracle 我想通过传递另一个过程名的输入参数来执行一个过程

Oracle 我想通过传递另一个过程名的输入参数来执行一个过程,oracle,plsql,profiling,Oracle,Plsql,Profiling,下面是一个场景。 我有N个过程,每个过程都有不同的输入参数,我希望每个过程的执行时间都存储在xyz表中 CREATE OR REPLACE PROCEDURE PROC_TIME_CAPTURE IS before_procedure timestamp; after_procedure timestamp; actual_time number; rpt_dt date; BEGIN select systimestamp into befor

下面是一个场景。 我有N个过程,每个过程都有不同的输入参数,我希望每个过程的执行时间都存储在xyz表中

CREATE OR REPLACE PROCEDURE PROC_TIME_CAPTURE IS

     before_procedure  timestamp;
     after_procedure timestamp;
     actual_time number;
     rpt_dt date;

BEGIN


select systimestamp into before_procedure from dual;
dbms_output.put_line (before_procedure );


proc_load('02/28/2013'); --- execution of procedure


select systimestamp into after_procedure from dual;
dbms_output.put_line (after_procedure);

select extract (second from (after_procedure-before_procedure)) into actual_time from dual;
dbms_output.put_line (actual_time);
END PROC_TIME_CAPTURE;
这就是我现在所做的。但我想让它充满活力。一次内执行一个过程的指令。我想将proc_名称和日期作为输入参数传递给主过程并执行它

我是这个网站的新手,所以在发布此查询时请忽略任何错误或格式问题


请告诉我这是否可以实现。

您可以将所需的过程调用作为字符串传递,然后使用execute IMMEDIATE执行

CREATE OR REPLACE PROCEDURE PROC_TIME_CAPTURE( p_procedure_call VARCHAR2 )  IS

     before_procedure  timestamp;
     after_procedure timestamp;
     actual_time number;
     rpt_dt date;

BEGIN


select systimestamp into before_procedure from dual;
dbms_output.put_line (before_procedure );


EXECUTE IMMEDIATE p_procedure_call;


select systimestamp into after_procedure from dual;
dbms_output.put_line (after_procedure);

select extract (second from (after_procedure-before_procedure)) into actual_time from dual;
dbms_output.put_line (actual_time);
END PROC_TIME_CAPTURE;
您可以传递包含参数的完整过程调用。等等

BEGIN
  PROC_TIME_CAPTURE( 'proc_load( ''20/10/2010'' )' );
END;

您是否尝试过动态sql,在EXECUTE Immediate行中使用过它?为什么不改用PL/sql的内置评测功能呢?