1

我想了解您如何在 Oracle 的另一个存储过程中调用存储过程。

例如:在 SQL Server 存储过程中,

CREATE PROCEDURE P2
.
.
.
DECLARE v_Id INT

EXEC P1 v_Name, v_Id OUTPUT

两者v_Namev_Id在过程 P1 中都可用。

你如何在Oracle中调用相同的

4

1 回答 1

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 块,在其中声明变量的范围只是该嵌套块而不是过程,但我在这里忽略了这种可能性。
  • 在 PL/SQL 中,不需要任何关键字来指示过程调用。就叫吧。
  • 您不需要指出参数是OUT参数(或IN OUT)。这是由您调用的过程定义的。
于 2013-10-05T21:04:42.910 回答