【发布时间】:2011-03-12 13:12:45
【问题描述】:
我记得那天我会制作一大堆 nvarchar(4000) 变量,随着它们的增长检查它们的长度,当它们填满时将它们切换出来,然后将整个混乱连接在一起以进行 exec 调用。我想知道是否有更简单的方法。
谢谢!
编辑:
代码示例,显示我搞砸了案例陈述
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) 变量 - (SQL 2005 及更高版本)?
-
有什么问题?动态 SQL 意味着字符串连接...
-
@Tommy - 添加您的评论作为答案。现货
-
@AdaTheDev - 有人打败了我 :)
标签: sql-server tsql dynamic-sql