如何在存储过程中调用存储过程(带有2个参数)?

时间:2013-07-01 05:44:49

标签: sql sql-server stored-procedures parameters sqlparameters

我的存储过程具有相同的参数(服务器名称和日期)。我想编写一个存储过程并在该SP中执行它们(称为SP_All)。

CREATE PROCEDURE [dbo].[SP_All]
AS
BEGIN
exec sp_1   @myDate datetime, @ServerName sysname
exec sp_2   @myDate datetime, @ServerName sysname
exec sp_3   @myDate datetime, @ServerName sysname
exec sp_4   @myDate datetime, @ServerName sysname
END
Go 

错误:必须声明标量变量“@myDate”。

3 个答案:

答案 0 :(得分:9)

我在这里看到两个问题:

  1. 您的程序显然需要两个参数@myDate@ServerName,您尚未声明这些参数。通过在过程名称和AS之间添加名称和类型来执行此操作。
  2. 将sp_1调用到sp_4时,无需再次指定参数的数据类型(声明已对此进行了处理,请参阅第1点)。

    CREATE PROCEDURE [dbo].[SP_All]
        @myDate datetime,
        @ServerName sysname
    AS
    BEGIN
        exec sp_1 @myDate, @ServerName
        exec sp_2 @myDate, @ServerName
        exec sp_3 @myDate, @ServerName
        exec sp_4 @myDate, @ServerName
    END
    

答案 1 :(得分:3)

试试这个 -

CREATE PROCEDURE [dbo].[SP_All]

       @myDate DATETIME
     , @ServerName SYSNAME

AS BEGIN

     EXEC dbo.sp_1 @myDate, @ServerName
     EXEC dbo.sp_2 @myDate, @ServerName
     EXEC dbo.sp_3 @myDate, @ServerName
     EXEC dbo.sp_4 @myDate, @ServerName

END

答案 2 :(得分:1)

您正在以错误的方式执行存储过程

exec sp_1 @myDate datetime, @ServerName sysname

语法完全错误。

当你必须使用参数执行存储过程时,首先声明参数并传递它..

declare @myDate datetime
declare @ServerName sysname

exec sp_1 @myDate, @ServerName

这是正确的做法..

相关问题