2010-07-21 6 views
0

Je génère une instruction de sélection de chaîne sql d'environ 25k caractères. Malheureusement, le serveur de production est SQL 2000.
Est-ce que ma seule option pour casser la chaîne en 4k nvarchars?Comment exécuter une instruction sql dynamique très longue sur SQL Server 2000?

--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

J'ai posté ceci avant, http://stackoverflow.com/questions/3190423/how-do-i-execute-a-very-long-dynamic-sql-statement mais la solution était pour sql server 2005. –

+0

J'étais va suggérer de poster des portions pour voir si la requête pourrait être minimisée en utilisant les instructions WITH, mais elles ne sont pas supportées en 2000 :(Y a-t-il un moyen qui ne puisse pas être coupé d'une manière ou d'une autre?/espace caractères ... –

+0

Hmm, peut-être que je peux créer une table de temp pour les résultats et ajouter des colonnes un par un ... –

Répondre

1

Essayez ceci:

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

Vous ne pouvez pas déclarer un texte variable locale, mais vous pouvez avoir un être un paramètre pour une procédure stockée.