Я пытаюсь создать строку SQL для выполнения через sp_executesql
, но я не могу присвоить значение объявленной переменной в переданной строке sql.
Итак, ниже приведен пример моей процедуры
ALTER PROCEDURE [dbo].[selectRecords]
@psID INT --parameter passed in
AS
DECLARE @existingRecordCount INT=0
DECLARE @sql NVARCHAR(1000)
DECLARE @paramDefinitions NVARCHAR(1000)
SET @paramDefinitions=
'@psID INT,
@existingRecordCount INT OUTPUT'
SET @sql='
SELECT
@existingRecordCount=COUNT(Name)
FROM dbo.Asset_Log
WHERE ID=@psID
GROUP BY Name'
EXECUTE sp_executesql @sql, @paramDefinitions, @psID, @existingRecordCount
Итак, я ожидаю, что количество моих записей будет в переменной @existingRecordCount
, но я получаю следующую ошибку:
Неверный синтаксис рядом с 'OUPUT'.
Необходимо объявить скалярную переменную "@existingRecordCount".
Что я делаю не так?
Заранее спасибо. Я использую SQL Server 2008
OUTPUT
неOUPUT
. Также вызовите какEXECUTE sp_executesql @sql, @paramDefinitions, @psID, @existingRecordCount OUTPUT
и объявите@psID
снаружи и назначьте ему значение, которое будет передано. - person Martin Smith   schedule 16.07.2012