小弟是一个菜鸟。。望各位大虾协助。。先谢谢了。
问题如下:我想在一个存储过程A中实现对另一个存储过程B的调用,B有输出参数(参数类型为number)。
直接在A中调用B的名称我知道可以实现,但是如果通过Execute Immediate 怎么调用呢(由于存储过程B是从一个调度表中读取到的。不能直接获得B的名称)create or replace procedure A is
P_RETURN number ; 定义返回参数
begin
B(P_RETURN) ; 可以实现(但是我不想通过此方法)
end A;info_t 是一个调度表
该表假设仅有一个procedure_name字段,表内保存内容为Bcreate or replace procedure A is
P_RETURN number;
v_procedure varchar(255) ;
begin
select ('call '||procedure_name||'('||:P_RETURN||')') into v_procedure from info_t ;
Execute Immediate v_procedure ;
end A;上面这个方法我只是写了一个实现思路。一定有不对的地方。希望高手能给予解决。谢谢!!(在线等)
问题如下:我想在一个存储过程A中实现对另一个存储过程B的调用,B有输出参数(参数类型为number)。
直接在A中调用B的名称我知道可以实现,但是如果通过Execute Immediate 怎么调用呢(由于存储过程B是从一个调度表中读取到的。不能直接获得B的名称)create or replace procedure A is
P_RETURN number ; 定义返回参数
begin
B(P_RETURN) ; 可以实现(但是我不想通过此方法)
end A;info_t 是一个调度表
该表假设仅有一个procedure_name字段,表内保存内容为Bcreate or replace procedure A is
P_RETURN number;
v_procedure varchar(255) ;
begin
select ('call '||procedure_name||'('||:P_RETURN||')') into v_procedure from info_t ;
Execute Immediate v_procedure ;
end A;上面这个方法我只是写了一个实现思路。一定有不对的地方。希望高手能给予解决。谢谢!!(在线等)
[INTO {define_variable,... | INTO record_name}]
[USING
[IN|OUT|IN OUT] bind_argument,...]
[RETURN[ING] INTO
bind_argument,...];Example:create or replace procedure p_test ( v_table_name out varchar2)
is
v_sql varchar2(1000);
begin
v_sql := 'select table_name from cat where rownum = 1';
execute immediate v_sql into v_table_name;
end;