oracle中,一个存储过程怎么调用另一个存储过程?这两个存储过程都带有各自的参数。直接调用似乎不行。

2025-03-17 09:29:11
推荐回答(1个)
回答(1):

函数是有返回值的,可以当作数据库的域来操作;而存储过程是没有返回值的,不可以当作域来操作的,随你怎么调用都是可以的;但是有一条规则是要注意的,同时更新锁定同一记录的函数/存储过程是不可以的。

看看我下面几个示例:

  1. 直接调用:


BEGIN 
  P_TJZF(a,b,c);//这是一个存储过程
  COMMIT; 
END; 
--或
select P_TJZF(a,b,c) from dual;--这是函数的执行方法,存储过程也可以这样干,只是没有返回值。
  1. 过程调用:

CREATE OR REPLACE procedure P_jgdy is
kk number(3) default 1;
kk2 number(2) default 1;
begin

   for kk in 1..2 loop
     kk2 := kk2 + 1;
     P_TJZF(kk,kk2,1);//这是一个存储过程
   end loop;
 
end P_jgdy;
/