2010-07-21 45 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) 

你不能声明文本局部变量,但你可以一个是存储过程的参数。