2010-07-21 102 views
0

我生成一個大約25K字符長的sql字符串select語句。不幸的是,生產服務器是SQL 2000.
是我唯一的選擇將字符串分解爲4k nvarchars嗎?如何在SQL Server 2000上執行非常長的動態sql語句?

--ex. 
DECLARE @s1 NVARCHAR(4000) 
DECLARE @s2 NVARCHAR(4000) 
DECLARE @s3 NVARCHAR(4000) 
DECLARE @s4 NVARCHAR(4000) 
DECLARE @s5 NVARCHAR(4000) 
DECLARE @s6 NVARCHAR(4000) 
DECLARE @s7 NVARCHAR(4000) 

--fill nvarchars 

EXEC @s1 + @s2 + @s3 + @s4 + @s5 + @s6 + @s7 
+0

我發佈此之前,http://stackoverflow.com/questions/3190423/how-do-i-execute-a-very-long-dynamic-sql-statement但解決方案是爲sql server 2005. – 2010-07-21 20:45:10

+0

我是將使用WITH語句來建議發佈部分以查看查詢是否可以最小化,但是它們在2000年不支持:(難道沒有辦法無法修剪嗎?我發現Oracle的動態SQL在解釋空白方面存在問題/空格字符... – 2010-07-21 20:47:56

+0

嗯,也許我可以創建一個臨時表的結果,並逐一添加列... – 2010-07-21 21:08:46

回答

1

試試這個:

CREATE PROCEDURE DynamicSQLExec 
    @SQL ntext 
AS 
EXEC (@SQL) 

你不能聲明文本局部變量,但你可以一個是存儲過程的參數。