【发布时间】:2012-07-16 22:31:33
【问题描述】:
我不断收到以下存储过程的错误。我使用 EXEC 让它正常工作,然后我切换到 sp_executesql 并且我无法让它执行。我不断收到以下错误:“@numberOfItems”附近的语法不正确。
ALTER PROCEDURE dbo.FetchResourcesToProcess
(
@tableName nvarchar(MAX),
@numberOfItems int
)
AS
BEGIN
DECLARE @SQL nvarchar(MAX);
SET NOCOUNT ON;
SET @SQL = N'Select TOP @numberOfItems * from ' + @tableName + N' where Active = 1 AND BeingProcessed = 0'
EXEC sp_executesql @SQL, N'@numberOfItems int', @numberOfItems
END
表名是一个结构如下的字符串:“[TABLENAME]”。
谢谢
【问题讨论】:
-
选择@SQL。获取结果并将其复制并粘贴到 SSMS 中,看看是否可以执行。您将获得更好的错误消息。
-
你需要在@numberOfItems周围加上括号:
N'Select TOP (@numberOfItems) * from '
标签: sql sql-server-2008 stored-procedures dynamic-sql sp-executesql