我想了解如何在Oracle中的另一个存储过程中调用存储过程。
例如:在SQL Server存储过程中,
CREATE PROCEDURE P2
.
.
.
DECLARE v_Id INT
EXEC P1 v_Name, v_Id OUTPUT
程序P1中提供v_Name
和v_Id
。
如何在Oracle中调用相同的内容
答案 0 :(得分:4)
这样的事情就是你所追求的
CREATE OR REPLACE PROCEDURE p2
AS
-- Do not use the `DECLARE` keyword
-- Variables must be defined at the top of the block
v_id pls_integer;
BEGIN
<<do stuff>>
-- Just call the procedure. No need for `EXEC`.
-- There is also no need to indicate that a parameter is an OUT parameter in the call
p1( v_name, v_id );
END;
要注意的一些事项
AS
和BEGIN
之间),而不是内联定义。你可以在你的过程中创建嵌套的PL / SQL块,你声明变量的范围只是嵌套块而不是过程,但我忽略了这种可能性。OUT
参数(或IN OUT
)。这是由您正在调用的程序定义的。