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

另外,这两个存储过程都不返回值。
2024-11-10 09:23:23
推荐回答(4个)
回答1:

直接调用就可以了。举个例子把 B 存储过程调用A 存储过程。
PROCEDURE A (p_1 in number,p_2 out number)

is
v_1 number;
begin
V_1:=p_1;
p_2:=v_1;
end A;

(1)如果A 与B同在一个package里面的话。那么 B里面直接可以调用A
PS:如果A,B在同一个Package 中无法调用的话,那么很可能是A,B在Spec里没有声明。一个package包含Spec 和Body,两层。不能调用很可能没有声明。声明后应该ok!

PROCEDURE B(p_1 in number)
is
v_result number;

begin

v_result =A(p_1);

end B;
其中v_result就是调用A的结果,A的返回值。

(2)如果A与B不在同一个package的话
那么B在调用A 的时候,需要加上pkg的名字
比如:A 存储过程在pkg :xxom_test_pkg 中

PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result = xxom_test_pkg .A(p_1);

end B;

----------------------------------------------------------
以上简单介绍了存储过程的调用。
希望对你有帮助

回答2:

已经有人回答的很专业了!
原则就是:你要调用哪个存储过程,就要为该存储过程传入它需要的参数
它定义的几个,你就传入几个
当然参数的类型要对应上。
还有就是如果一个存储过程中定义了out类型的参数,当你在调用它的时候,这个out类型的参数也要参入,看它定义的是什么类型的out参数。然后定义一个该类型的变量,传入进去,用于接收存储过程返回的值。然后用这个值,去做下面的逻辑。

回答3:

既然你想调用另外一个存储过程,那么就应该提供给他必要的参数,这个参数你可以通过其他方式获得,或者传空之类的。
你所说的直接调用不行,是什么意思?缺少参数?还是什么?

回答4:

楼下回答太帅了。学习了