Как вызвать хранимые процедуры (с 2 параметрами) в хранимой процедуре?

У меня есть хранимые процедуры с теми же параметрами (имя сервера и дата). Я хочу написать хранимую процедуру и выполнить их в этом 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 ответов


Я вижу здесь два вопроса:

  1. ваша процедура, по-видимому, принимает два параметра,@myDate и @ServerName, который вы еще не объявили. Сделать это, добавив имена и типы между именем процедуры и как.
  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
    

попробуйте это -

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

вы неправильно выполняете хранимые процедуры

exec sp_1 @myDate datetime, @ServerName sysname

совершенно неправильный синтаксис.

когда вам нужно выполнить хранимую процедуру с параметрами, сначала объявите параметр и передайте его..

declare @myDate datetime
declare @ServerName sysname

exec sp_1 @myDate, @ServerName

это правильный подход..