在Oracle中的另一个存储过程中执行存储过程

时间:2013-10-05 19:04:38

标签: sql-server oracle stored-procedures

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

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

CREATE PROCEDURE P2
.
.
.
DECLARE v_Id INT

EXEC P1 v_Name, v_Id OUTPUT

程序P1中提供v_Namev_Id

如何在Oracle中调用相同的内容

1 个答案:

答案 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;

要注意的一些事项

  • 变量在块的顶部定义(在ASBEGIN之间),而不是内联定义。你可以在你的过程中创建嵌套的PL / SQL块,你声明变量的范围只是嵌套块而不是过程,但我忽略了这种可能性。
  • 在PL / SQL中,您不需要任何关键字来指示过程调用。只需打电话。
  • 您无需指明参数是OUT参数(或IN OUT)。这是由您正在调用的程序定义的。