我想了解您如何在 Oracle 的另一个存储过程中调用存储过程。
例如:在 SQL Server 存储过程中,
CREATE PROCEDURE P2
.
.
.
DECLARE v_Id INT
EXEC P1 v_Name, v_Id OUTPUT
两者v_Name
和v_Id
在过程 P1 中都可用。
你如何在Oracle中调用相同的
我想了解您如何在 Oracle 的另一个存储过程中调用存储过程。
例如:在 SQL Server 存储过程中,
CREATE PROCEDURE P2
.
.
.
DECLARE v_Id INT
EXEC P1 v_Name, v_Id OUTPUT
两者v_Name
和v_Id
在过程 P1 中都可用。
你如何在Oracle中调用相同的
像这样的东西就是你所追求的
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
)。这是由您调用的过程定义的。