2011-09-16 21 views
2

我正在使用動態SQL,我需要執行一個長的SQL查詢,首先我聲明@var查詢爲nvarchar(4000),但我的查詢超過4000個字符。 我嘗試更改爲nvarchar(8000),但引發不超過4000個字符的異常。sp_executeSQL和超過2000個字符的陳述

最後我聲明var作爲varchar(8000)並沒有錯誤ocurrs,但是當我要執行sp_executeSQL raise和錯誤sp_executeSQL期望ntext/nchar/nvarchar。

如何使用sp_executeSQL執行更長的SQL查詢? Thnks!

我使用SQL Server Express 2005

回答

4

如你2005,你可以使用declare @var nvarchar(max)長達1十億個字符。

你會發現使用PRINT語句不工作,查看變量內容很長的字符串,所以你可以做

SELECT @var AS [processing-instruction(x)] FOR XML PATH('') 

要查看未截斷的內容。

+1

這是調試動態sql的答案!非常感謝。我發現了另一個使用類似XML方法的答案,但輸出是編碼的(例如「<>」將顯示爲「lt; gt;」)。你的方法沒有這個問題,我可以使用換行符來查看動態代碼(而不是混淆成一個長的行)。 – MikeTeeVee