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