Я пытаюсь создать динамическую хранимую процедуру, позволяющую передать мою строку where как часть параметра. Однако после этой статьи из MSDN я так и не смог запустить ее. и с ошибкой, как описано в заголовке. Любая помощь горячо приветствуется.
EXEC [dbo].[Get_Demand_By_Click_Test]
@Year = 2014
Ошибка:
Сообщение 8178, уровень 16, состояние 1, строка 9
Параметризованный запрос '(@Year int)
SELECT
dbo.vw_Demand_By.*
FROM '
ожидает параметр '@Year' , который не был поставлен.
Хранимая процедура:
ALTER PROCEDURE [dbo].[Get_demand_by_click_test]
@Year INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
-- Insert statements for procedure here
DECLARE @SQL NVARCHAR(max),
@ParamDefinition NVARCHAR(max)
SET @SQL = N'
SELECT
dbo.vw_Demand_By.*
FROM
dbo.vw_Demand_By
WHERE
Year(EventStartDate) = @Year'
SET @ParamDefinition = N'@Year int';
EXECUTE Sp_executesql
@SQL,
@ParamDefinition;
END