Я пытаюсь создать хранимую процедуру на основе запроса, который я написал, с заранее определенными параметрами.Сохраненная процедура с параметрами по умолчанию
При реорганизации для создания хранимой процедуры, и я выполняю хранимую процедуру, она заявляет, что параметры не были предоставлены. Может ли кто-нибудь сказать мне, почему?
Я знаю, что я пропустил что-то важное, но после того, как я вошел в код с кодом, я дошел до необходимой помощи экспертов.
Это мой код (сокращенный):
Alter Procedure [Test]
@StartDate AS varchar(6),
@EndDate AS varchar(6)
AS
Set @StartDate = '201620' --Define start YearWeek
Set @EndDate = (SELECT CAST(DATEPART(YEAR,getdate()) AS varchar(4)) + CAST(DATEPART(WEEK,getdate())-1 AS varchar(2)))
SELECT
*
FROM
(SELECT DISTINCT
[YEAR], [WeekOfYear]
FROM
[dbo].[DimDate]
WHERE
[Year] + [WeekOfYear] BETWEEN @StartDate AND @EndDate) dimd
LEFT JOIN
[Schema].[Table1] qad ON (qad.[Year] + qad.[Week of the Year]) = (dimd.[Year] + dimd.WeekOfYear)
Когда я запускаю процедуру я получаю:
Msg 201, Level 16, State 4 Процедура испытания, линия 0
Процедура или функция 'test' ожидает параметр '@StartDate', который не был указан .
Заранее спасибо.
Почему вы запрашиваете '@ StartDate' и' @ EndDate' в качестве параметра, если вы устанавливаете их в своем tsql? просто объявите их в t-sql и он должен работать нормально – jellz77
Если эти параметры называются 'StartDate' и' EndDate' - ***, то почему на EARTH *** они имеют тип 'varchar (6)' ?? Вы всегда должны использовать наиболее подходящий тип данных, а строка определенно не является лучшим выбором для ** даты ** - используйте 'DATE' или' DATETIME2 (n) 'для любых связанных с датой! –
Ваше название относится к значениям по умолчанию, но вы на самом деле ничего не указываете. Вы могли бы добавить '= null' в объявления, чтобы фактически предоставить им значения по умолчанию, а затем вы могли бы' exec', не передавая их. Существующие ответы уже указывают на некоторые другие исправления. – shawnt00