我记得在那天我会做的nvarchar(4000)
瓦尔整体怪人,检查他们的,因为他们成长的长度,切换出来,因为他们填补了,然后一起串联全乱了exec调用。我想知道是否有更简单的方法。如何执行非常长的动态sql语句?
谢谢!
编辑:
代码示例,说明我搞砸了case语句
DECLARE @sql NVARCHAR(MAX)
SELECT @sql = CAST(N'SELECT ' AS NVARCHAR(MAX))
DECLARE @Index INT
SELECT @Index = 0
WHILE (@Index < 1000)
BEGIN
SELECT @sql = CAST(@sql AS NVARCHAR(MAX)) + CAST(N' ' AS NVARCHAR(MAX)) + CAST(CASE @Index WHEN 1 THEN N' ' END AS NVARCHAR(MAX))
SELECT @Index = @Index + 1
END
SELECT @sql = CAST(@sql AS NVARCHAR(MAX)) + CAST(1 AS NVARCHAR(MAX))
SELECT LEN(@sql)
EXECUTE sp_executesql @sql
我可能不明白这个问题,但为什么不使用nvarchar(MAX)变量(s) - (SQL 2005及更高版本)? – Tommy 2010-07-06 21:38:34
什么问题?动态SQL意味着字符串连接... – 2010-07-06 21:46:00
@Tommy - 添加您的评论作为答案。现货上 – AdaTheDev 2010-07-06 21:52:38