Я помню, как в тот день я сделал бы целый wack of nvarchar(4000)
vars, проверял их длину по мере их роста, выключал их, когда они заполнялись, а затем объединял весь беспорядок вместе для вызова exec. Мне было интересно, есть ли более простой способ сделать это.Как выполнить очень длинный динамический SQL-запрос?
Спасибо!
Edit:
Пример кода, показывает мне прищурив случай заявление
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 и выше)? – Tommy
В чем вопрос? Dynamic SQL означает конкатенацию строк ... –
@Tommy - добавьте свой комментарий в качестве ответа. Пятно на – AdaTheDev