Cómo ejecuto cadenas con más de 4000 caracteres con exec sp_executesql

11/11/2003 - 09:44 por anonymous | Informe spam
Cómo ejecuto cadenas con más de 4000 caracteres con exec
sp_executesql @SQLString???

Utilizo el código que escribí abajo para ejecutar una
sentencia SQL armando una cadena SQL pero me la truca a
los 4000 caracteres, antes me la truncaba a los 256 y fui
a Herramientas --> Opciones --> Resultados del Query
Analyser y le puse 8192 -que es el máximo- en "Maximum
characters per column" y cuando ejecuto el query me
genera hasta 4000 caracteres, a pesar que le cambio a la
variable @SQLString NVARCHAR(4000) por VARCHAR(8000).
a) Cómo hago para que la variable @SQLString me acepte
más de 4000 caracteres??? (en realidad mi cadena tendrá
unos 6000 caracteres)
b) Si tuviera 10.000 caracteres. Habría alguna forma de
ejecutarla???



Ejemplo resumido de lo que hago:

@SQLString NVARCHAR(4000)

OPEN tablas_cur

FETCH tablas_cur INTO
@NombreTablaCursor

SET @SQLString = N'SELECT ... FROM ' +
@NombreTablaCursor + ' WHERE..'

..
..
..

exec sp_executesql @SQLString

Preguntas similare

Leer las respuestas

#1 Accotto Maximiliano D.
11/11/2003 - 13:16 | Informe spam
que estas intentando hacer con una cadena tan grande?

puedes verificar el tamaño de tu cadena con la funcion len()

te fijaste el tamaño de decia con len?

Accotto Maximiliano Damian
"anonymous" escribió en el mensaje
news:02a301c3a830$0316fa80$
Cómo ejecuto cadenas con más de 4000 caracteres con exec
sp_executesql @SQLString???

Utilizo el código que escribí abajo para ejecutar una
sentencia SQL armando una cadena SQL pero me la truca a
los 4000 caracteres, antes me la truncaba a los 256 y fui
a Herramientas --> Opciones --> Resultados del Query
Analyser y le puse 8192 -que es el máximo- en "Maximum
characters per column" y cuando ejecuto el query me
genera hasta 4000 caracteres, a pesar que le cambio a la
variable @SQLString NVARCHAR(4000) por VARCHAR(8000).
a) Cómo hago para que la variable @SQLString me acepte
más de 4000 caracteres??? (en realidad mi cadena tendrá
unos 6000 caracteres)
b) Si tuviera 10.000 caracteres. Habría alguna forma de
ejecutarla???



Ejemplo resumido de lo que hago:

@SQLString NVARCHAR(4000)

OPEN tablas_cur

FETCH tablas_cur INTO
@NombreTablaCursor

SET @SQLString = N'SELECT ... FROM ' +
@NombreTablaCursor + ' WHERE..'

..
..
..

exec sp_executesql @SQLString
Respuesta Responder a este mensaje
#2 anonymous
11/11/2003 - 16:20 | Informe spam
Hola,
No me queda otra que hacer esa cadena que tiene unos 6000
caracteres. (Lo mismo ocuparía si no la hago dinámica).
Es un query con muchos UNION y joins que se genersa
dinámicamente y ocupan muchos caracteres.

Probe poniendo select len(@SQLString) y me dice 4000
aunque en realidad debería ser más grande (pero el
problema es que lo corta!!!!).

Cómo podría hacer la cadena más grande ???

Ojo que luego probe como me dijeron antes poniendo
varchar la variable @SQLString y sacandole la N de la
sentencia SET @SQLString = N'SELECT ...
Y ME FUNCIONO!!!!

Está bien sacarle la N o esto me puede traer algún
problema??????
Hay alguna manera que me permita más de 8000 caracteres
que es la limitación de los Varchar???

Gracias!


que estas intentando hacer con una cadena tan grande?

puedes verificar el tamaño de tu cadena con la funcion


len()

te fijaste el tamaño de decia con len?

Accotto Maximiliano Damian
"anonymous"


escribió en el mensaje
news:02a301c3a830$0316fa80$
Cómo ejecuto cadenas con más de 4000 caracteres con exec
sp_executesql @SQLString???

Utilizo el código que escribí abajo para ejecutar una
sentencia SQL armando una cadena SQL pero me la truca a
los 4000 caracteres, antes me la truncaba a los 256 y fui
a Herramientas --> Opciones --> Resultados del Query
Analyser y le puse 8192 -que es el máximo- en "Maximum
characters per column" y cuando ejecuto el query me
genera hasta 4000 caracteres, a pesar que le cambio a la
variable @SQLString NVARCHAR(4000) por VARCHAR(8000).
a) Cómo hago para que la variable @SQLString me acepte
más de 4000 caracteres??? (en realidad mi cadena tendrá
unos 6000 caracteres)
b) Si tuviera 10.000 caracteres. Habría alguna forma de
ejecutarla???



Ejemplo resumido de lo que hago:

@SQLString NVARCHAR(4000)

OPEN tablas_cur

FETCH tablas_cur INTO
@NombreTablaCursor

SET @SQLString = N'SELECT ... FROM ' +
@NombreTablaCursor + ' WHERE..'

...
...
...

exec sp_executesql @SQLString


.

Respuesta Responder a este mensaje
#3 anonymous
11/11/2003 - 16:45 | Informe spam
Rectifico, cuando ejecuto lo que digo en el mail de acá
arriba me da el error:
Procedure expects parameter '@statement' of
type 'ntext/nchar/nvarchar'.

Probe poniendo EXECUTE (@SQLString) en vez de exec
sp_executesql @SQLString y en principio parece funcionar
bien...
Alguna opinión al respecto???



Hola,
No me queda otra que hacer esa cadena que tiene unos


6000
caracteres. (Lo mismo ocuparía si no la hago dinámica).
Es un query con muchos UNION y joins que se genersa
dinámicamente y ocupan muchos caracteres.

Probe poniendo select len(@SQLString) y me dice 4000
aunque en realidad debería ser más grande (pero el
problema es que lo corta!!!!).

Cómo podría hacer la cadena más grande ???

Ojo que luego probe como me dijeron antes poniendo
varchar la variable @SQLString y sacandole la N de la
sentencia SET @SQLString = N'SELECT ...
Y ME FUNCIONO!!!!

Está bien sacarle la N o esto me puede traer algún
problema??????
Hay alguna manera que me permita más de 8000 caracteres
que es la limitación de los Varchar???

Gracias!


que estas intentando hacer con una cadena tan grande?

puedes verificar el tamaño de tu cadena con la funcion


len()

te fijaste el tamaño de decia con len?

Accotto Maximiliano Damian
"anonymous"


escribió en el mensaje
news:02a301c3a830$0316fa80$
Cómo ejecuto cadenas con más de 4000 caracteres con exec
sp_executesql @SQLString???

Utilizo el código que escribí abajo para ejecutar una
sentencia SQL armando una cadena SQL pero me la truca a
los 4000 caracteres, antes me la truncaba a los 256 y




fui
a Herramientas --> Opciones --> Resultados del Query
Analyser y le puse 8192 -que es el máximo- en "Maximum
characters per column" y cuando ejecuto el query me
genera hasta 4000 caracteres, a pesar que le cambio a la
variable @SQLString NVARCHAR(4000) por VARCHAR(8000).
a) Cómo hago para que la variable @SQLString me acepte
más de 4000 caracteres??? (en realidad mi cadena tendrá
unos 6000 caracteres)
b) Si tuviera 10.000 caracteres. Habría alguna forma de
ejecutarla???



Ejemplo resumido de lo que hago:

@SQLString NVARCHAR(4000)

OPEN tablas_cur

FETCH tablas_cur INTO
@NombreTablaCursor

SET @SQLString = N'SELECT ... FROM ' +
@NombreTablaCursor + ' WHERE..'

...
...
...

exec sp_executesql @SQLString


.



.

Respuesta Responder a este mensaje
#4 Accotto Maximiliano D.
11/11/2003 - 18:21 | Informe spam
Solo como aporte: coincido con lo q dice Ulises!! me parece una barbaridad
un SQL de 8000 o 4000 Caracteres.

Accotto Maximiliano Damian
"anonymous" escribió en el mensaje
news:116401c3a86a$dcdda9a0$
Rectifico, cuando ejecuto lo que digo en el mail de acá
arriba me da el error:
Procedure expects parameter '@statement' of
type 'ntext/nchar/nvarchar'.

Probe poniendo EXECUTE (@SQLString) en vez de exec
sp_executesql @SQLString y en principio parece funcionar
bien...
Alguna opinión al respecto???



Hola,
No me queda otra que hacer esa cadena que tiene unos


6000
caracteres. (Lo mismo ocuparía si no la hago dinámica).
Es un query con muchos UNION y joins que se genersa
dinámicamente y ocupan muchos caracteres.

Probe poniendo select len(@SQLString) y me dice 4000
aunque en realidad debería ser más grande (pero el
problema es que lo corta!!!!).

Cómo podría hacer la cadena más grande ???

Ojo que luego probe como me dijeron antes poniendo
varchar la variable @SQLString y sacandole la N de la
sentencia SET @SQLString = N'SELECT ...
Y ME FUNCIONO!!!!

Está bien sacarle la N o esto me puede traer algún
problema??????
Hay alguna manera que me permita más de 8000 caracteres
que es la limitación de los Varchar???

Gracias!


que estas intentando hacer con una cadena tan grande?

puedes verificar el tamaño de tu cadena con la funcion


len()

te fijaste el tamaño de decia con len?

Accotto Maximiliano Damian
"anonymous"


escribió en el mensaje
news:02a301c3a830$0316fa80$
Cómo ejecuto cadenas con más de 4000 caracteres con exec
sp_executesql @SQLString???

Utilizo el código que escribí abajo para ejecutar una
sentencia SQL armando una cadena SQL pero me la truca a
los 4000 caracteres, antes me la truncaba a los 256 y




fui
a Herramientas --> Opciones --> Resultados del Query
Analyser y le puse 8192 -que es el máximo- en "Maximum
characters per column" y cuando ejecuto el query me
genera hasta 4000 caracteres, a pesar que le cambio a la
variable @SQLString NVARCHAR(4000) por VARCHAR(8000).
a) Cómo hago para que la variable @SQLString me acepte
más de 4000 caracteres??? (en realidad mi cadena tendrá
unos 6000 caracteres)
b) Si tuviera 10.000 caracteres. Habría alguna forma de
ejecutarla???



Ejemplo resumido de lo que hago:

@SQLString NVARCHAR(4000)

OPEN tablas_cur

FETCH tablas_cur INTO
@NombreTablaCursor

SET @SQLString = N'SELECT ... FROM ' +
@NombreTablaCursor + ' WHERE..'

...
...
...

exec sp_executesql @SQLString


.



.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida