【发布时间】:2018-02-12 08:51:36
【问题描述】:
我正在尝试从 SQL Server while 循环执行动态 SQL。当执行唯一的打印语句时,查询以正确的格式打印,但不使用execute() 或SP_EXECUTESQL 执行动态SQL。请建议。
代码:
WHILE( @count > 0 )
BEGIN
SELECT
@minID = MinID,
@maxID = MaxID
FROM
IDRange
WHERE
ID = @count
SET @QueryString = ' UPDATE
SD WITH(TABLOCk)
SET a = S4H.ID
FROM
A (nolock) S4H
INNER JOIN B SD on S4H.col = SD.col AND S4H.col1 = SD.col1
WHERE
SD.ID between ' + convert (varchar,@minID )+' AND '+convert (varchar,@maxID )+' AND
S4H.ID <= SD.ID AND
SD.ID <= S4h.ROWID'
SET @count= @count - 1'
print @QueryString
EXECUTE (@QueryString)
EXECUTE sp_executesql @QueryString, N'@minID INT,@maxID INT', @minID = @minID,@maxID= @maxID
--EXEC SP_EXECUTESQL @QueryString
--SELECT @Rcount= @@Rowcount
SET @count= @count - 1
END
结束
【问题讨论】:
标签: sql sql-server dynamic while-loop