acerce de EXECUTE

26/09/2003 - 00:03 por Soporte\(SITEC\) | Informe spam
De antemano les agradesco su ayuda, con el problema que tengo, estoy
trabando en un sistema donde tengo un modulo de consultas, pero por el
numero de opciones que uso para armar un filtro el tamaño del procedimiento
al macenado se hace muy grande, lo peor es que la parte del select es
siempre la misma la que cambia es la parte del WHERE, un forma en que
solucione este problema laguna vez fuen de la siguiente manera.

EXECUTE (" SELECT
COL1,
COL2,
COL3 FROM TABLA WHERE " + @Opciones)

Como pueden adivinar en @opciones le enviaba la parte del WHERE a mi
procedimiento almacenado, esto lo hize utilizando SQL 7.0 ahora estoy
tratando de hacerlo con SQL 2000 pero me dice que la longitud de los
parametros del EXCEUTE no pueden exceder de 128,

Si alguien sabe como aumentarle la longitud de datos se los agradeceria lo
postearan
O si alguno de ustedes sabe otra forma de solucionar este problema
igualmente les agradeceria me lo dijeran

Gracias por su ayuda...
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
26/09/2003 - 03:54 | Informe spam
Prueba a hacerlo asi:

DECLARE @strSql VARCHAR(4000)
SET @strSql = 'SELECT etc etc...'
EXEC (@strSql)

Tambien puedes seguir la recomendación siguiente, extraida de los Books
Online:

Utilizar EXECUTE con una cadena de caracteres

Utilice el operador de concatenación de cadenas (+) para crear grandes
cadenas para ejecución dinámica. Cada expresión de cadena puede ser una
mezcla de tipos de datos Unicode y no Unicode.

Aunque cada [N] 'tsql_string' o @string_variable debe contener menos de 8000
bytes, la concatenación se realiza lógicamente en el analizador de SQL
Server y nunca llega a materializarse en memoria. Por ejemplo, esta
instrucción no produce nunca la cadena concatenada esperada de 16000
caracteres:

EXEC('name_of_8000_char_string' + 'another_name_of_8000_char_string')


saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

***IMPORTANTE*** Microsoft Security Bulletin MS03-039
http://www.microsoft.com/security/s...03-039.asp

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Soporte(SITEC)" wrote in message
news:
De antemano les agradesco su ayuda, con el problema que tengo, estoy
trabando en un sistema donde tengo un modulo de consultas, pero por el
numero de opciones que uso para armar un filtro el tamaño del


procedimiento
al macenado se hace muy grande, lo peor es que la parte del select es
siempre la misma la que cambia es la parte del WHERE, un forma en que
solucione este problema laguna vez fuen de la siguiente manera.

EXECUTE (" SELECT
COL1,
COL2,
COL3 FROM TABLA WHERE " + @Opciones)

Como pueden adivinar en @opciones le enviaba la parte del WHERE a mi
procedimiento almacenado, esto lo hize utilizando SQL 7.0 ahora estoy
tratando de hacerlo con SQL 2000 pero me dice que la longitud de los
parametros del EXCEUTE no pueden exceder de 128,

Si alguien sabe como aumentarle la longitud de datos se los agradeceria lo
postearan
O si alguno de ustedes sabe otra forma de solucionar este problema
igualmente les agradeceria me lo dijeran

Gracias por su ayuda...


Preguntas similares