我試圖通過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