我试图通过sp_executesql
构建一个SQL字符串来执行,但我似乎无法将值分配给传入的sql字符串中的已声明变量。使用EXECUTE在存储过程中设置变量sp_executesql
所以下面是我的程序的一个例子
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 [email protected]
GROUP BY Name'
EXECUTE sp_executesql @sql, @paramDefinitions, @psID, @existingRecordCount
所以,我希望我的记录计数是在@existingRecordCount
可变的,但我收到以下错误:
Incorrect syntax near 'OUPUT'.
Must declare the scalar variable "@existingRecordCount".
上午什么我做错了?
在此先感谢。我使用的是SQL Server 2008中
'OUTPUT'不'OUPUT'。也可以像调用'EXECUTE sp_executesql @sql,@paramDefinitions,@psID,@existingRecordCount OUTPUT'并声明外部'@ psID'并为其分配值。 – 2012-07-16 15:26:32
您能否解释为什么需要动态SQL? – 2012-07-16 15:35:35
马丁,谢谢。抱歉关于错字。亚伦,我刚刚修改了这个帖子的例子 – Sun 2012-07-16 15:36:40