关于在存储过程中调用其他过程的问题

alias2000 2004-07-12 02:22:12
在存储过程中想要调用其他的存储过程,但是调用的过程名为一个变量,请教应该如何做?
...全文
176 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackjingsg 2004-07-19
  • 打赏
  • 举报
回复
--调试一下,在PL-SQL中可以:
--如果保存过程名的变量为var:
:var||(parm);
jackjingsg 2004-07-19
  • 打赏
  • 举报
回复
--如果保存过程名的变量为var:
exec :var||(parm);
alias2000 2004-07-18
  • 打赏
  • 举报
回复
没人回答了吗?
joyangle 2004-07-18
  • 打赏
  • 举报
回复
在写execute immediate的时候用如下方式:
execute immediate 'begin proc_name(:para1,:para2) end;' using
para1 in para1_value,para2 out para2_value;
其中:para1是输入变量,para2是输出变量
beckhambobo 2004-07-18
  • 打赏
  • 举报
回复
create or replace procedure p_1(v_pname varchar2) as
retstr varchar2(100);
begin
execute immediate ' begin '||v_pname||'('||retstr||'); end;';
dbms_output.put_line(retstr);
end;
/
alias2000 2004-07-14
  • 打赏
  • 举报
回复
再顶一下~~
qiansl 2004-07-13
  • 打赏
  • 举报
回复
返回值赋给变量,让后再接收变量。
alias2000 2004-07-13
  • 打赏
  • 举报
回复
没有输出参数的话可以解决,但是执行的存储过程需要返回输出参数,上面的办法好像行不通。
dinya2003 2004-07-13
  • 打赏
  • 举报
回复
动态sql.将要调用的传到一串字符串中去.
alias2000 2004-07-13
  • 打赏
  • 举报
回复
我是想取得输出参数的返回值。
tjandy 2004-07-13
  • 打赏
  • 举报
回复
create procedure v_temp as
v_sql varchar2;
begin
v_sql:='你要用的存储过程名及参数';
dbms_output.put_line(v_sql);
exectude immediate v_sql;
end v_temp;

alias2000 2004-07-13
  • 打赏
  • 举报
回复
关键是如何能赋给变量啊?
bzszp 2004-07-12
  • 打赏
  • 举报
回复
我测试的过程中发现必须使用begin ... end 才可以
SQL> create or replace procedure p_1(v_pname varchar2) as
2
3 begin
4 execute immediate v_pname;
5 end;
6 /

过程已创建。

SQL> exec p_1('p_temp');
BEGIN p_1('p_temp'); END;

*
ERROR 位于第 1 行:
ORA-00900: 无效 SQL 语句
ORA-06512: 在"SCOTT.P_1", line 4
ORA-06512: 在line 1


SQL>
bzszp 2004-07-12
  • 打赏
  • 举报
回复
SQL> create procedure p_temp as
2 begin
3 dbms_output.put_line('Procedure is executed!');
4 end;
5 /

过程已创建。
SQL> create or replace procedure p_1(v_pname varchar2) as
2
3 begin
4 execute immediate '
5 begin
6 '||v_pname||';'
7 ||' end;';
8 end;
9 /

过程已创建。

SQL> exec p_1('p_temp');
Procedure is executed!

PL/SQL 过程已成功完成。

SQL>
chanet 2004-07-12
  • 打赏
  • 举报
回复
EXECUTE IMMEDIATE '过程名(' || para1 || ',' || para2 || ')';
chanet 2004-07-12
  • 打赏
  • 举报
回复
EXECUTE IMMEDIATE '¹ý³ÌÃû(' || para1 || ',' || para2 || ')';
alias2000 2004-07-12
  • 打赏
  • 举报
回复
比如mssql里可以这么写
exec('exec' + v_sp_name + ' ' + v_sp_p1)
v_sp_name是存储过程名,v_sp_p1是参数名

但是oracle里好像不能直接exec
freddy2003 2004-07-12
  • 打赏
  • 举报
回复
调用的过程名为一个变量?
是什么意思

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧