在另一个内部执行存储过程

时间:2015-11-30 20:21:56

标签: sql-server stored-procedures

USE tag
GO

ALTER PROCEDURE Graph
   @x VARCHAR(7)
AS
BEGIN
  DECLARE @y VARCHAR(9)
  DECLARE @z VARCHAR(9) 

  SELECT @y = @x;
  SELECT @z = @x;

  IF( (SELECT A.h FROM A 
       LEFT JOIN R ON A.h= R.h
       WHERE  A.x= @x) = '1')
  BEGIN
     EXEC Graph1 @y --> another stored procedure
  END

  IF( (SELECT A.h FROM A 
       LEFT JOIN R ON A.h= R.h
       WHERE  A.x= @x) = '3')
  BEGIN
     EXEC Graph2 @z --> another stored procedure
  END  
END 

这里我收到以下错误

  

过程或函数'Graph1'需要参数'@y',这是未提供的。   过程或函数'Graph2'需要参数'@z',这是未提供的。

但是我声明了它们并将值分配给存储过程中的上述参数。关于这个错误的任何建议或想法我在这里做什么?

1 个答案:

答案 0 :(得分:0)

而不是:

   EXEC Graph1 --> another stored procedure

你需要这样做:

   EXEC Graph1 @y

同样地:

   EXEC Graph1 @z

目前,您在第一个存储过程中设置了局部变量@y@z的值,但是您没有将它们作为参数传递给您正在调用的存储过程。