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

Rah*_*aha 10 sql sql-server parameters stored-procedures sqlparameter

我有相同参数(服务器名称和日期)的存储过程.我想编写一个存储过程并在该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 
Run Code Online (Sandbox Code Playgroud)

错误:必须声明标量变量"@myDate".

Hei*_*nzi 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
    
    Run Code Online (Sandbox Code Playgroud)


Dev*_*art 5

试试这个——

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
Run Code Online (Sandbox Code Playgroud)