T-SQL Muchas variables iguales

07/10/2003 - 10:08 por Oscar Heras | Informe spam
Hola a tod@s

Tengo el siguiente problema.

Existe un procedimiento en el que tengo que coger 20 variables,
llamadas @Var1, @Var2, @Var3... hasta 20

Necesito hacer un bucle de 20 veces, de forma que cada vez coga la
variable que lleve el contador. Éste es el código que tengo ahora,
pero me parece muy fuerte. ¿Alguien sabe como podria solucionarlo?

if @Descripcion is not NULL
WHILE @Contador < @CantidadVariables
BEGIN
set @Contador = @Contador + 1

if @Contador = 1
BEGIN
set @Descripcion = (SELECT
REPLACE(@Descripcion, '%' + right('00' + (cast(@contador as
varchar(100))), 2), @Var1))
CONTINUE
END
if @Contador = 2
BEGIN
set @Descripcion = (SELECT
REPLACE(@Descripcion, '%' + right('00' + (cast(@contador as
varchar(100))), 2), @Var2))
CONTINUE
END
..
Donde lo único que cambia es que si @Contador = 1, la variable a
utilizar es @var1. Si @Contador = 2, la variable sería @Var2...

GRACIAS

Preguntas similare

Leer las respuestas

#1 Tako
07/10/2003 - 10:15 | Informe spam
<Oscar Heras> wrote in message
news:
Hola a

Tengo el siguiente problema.

Existe un procedimiento en el que tengo que coger 20 variables,
llamadas @Var1, @Var2, @Var3... hasta 20

Necesito hacer un bucle de 20 veces, de forma que cada vez coga la
variable que lleve el contador. Éste es el código que tengo ahora,
pero me parece muy fuerte. ¿Alguien sabe como podria solucionarlo?

if @Descripcion is not NULL
WHILE @Contador < @CantidadVariables
BEGIN
set @Contador = @Contador + 1

if @Contador = 1
BEGIN
set @Descripcion = (SELECT
REPLACE(@Descripcion, '%' + right('00' + (cast(@contador as
varchar(100))), 2), @Var1))
CONTINUE
END
if @Contador = 2
BEGIN
set @Descripcion = (SELECT
REPLACE(@Descripcion, '%' + right('00' + (cast(@contador as
varchar(100))), 2), @Var2))
CONTINUE
END
..
Donde lo único que cambia es que si @Contador = 1, la variable a
utilizar es @var1. Si @Contador = 2, la variable sería @Var2...




¿ Por que no concatenas el valor de @Contador a '@var'?
Respuesta Responder a este mensaje
#2 Oscar Heras
07/10/2003 - 10:23 | Informe spam
No lo concateno porque no me deja, me da error porque me intenta
concatenar el valor de @Var con '1', y me da error en la variable @Var

set @VariableAuxiliar = @Var + @Contador



On Tue, 7 Oct 2003 10:15:52 +0200, "Tako" wrote:


<Oscar Heras> wrote in message
news:
Hola a

Tengo el siguiente problema.

Existe un procedimiento en el que tengo que coger 20 variables,
llamadas @Var1, @Var2, @Var3... hasta 20

Necesito hacer un bucle de 20 veces, de forma que cada vez coga la
variable que lleve el contador. Éste es el código que tengo ahora,
pero me parece muy fuerte. ¿Alguien sabe como podria solucionarlo?

if @Descripcion is not NULL
WHILE @Contador < @CantidadVariables
BEGIN
set @Contador = @Contador + 1

if @Contador = 1
BEGIN
set @Descripcion = (SELECT
REPLACE(@Descripcion, '%' + right('00' + (cast(@contador as
varchar(100))), 2), @Var1))
CONTINUE
END
if @Contador = 2
BEGIN
set @Descripcion = (SELECT
REPLACE(@Descripcion, '%' + right('00' + (cast(@contador as
varchar(100))), 2), @Var2))
CONTINUE
END
..
Donde lo único que cambia es que si @Contador = 1, la variable a
utilizar es @var1. Si @Contador = 2, la variable sería @Var2...




¿ Por que no concatenas el valor de @Contador a '@var'?

Respuesta Responder a este mensaje
#3 Tako
07/10/2003 - 10:39 | Informe spam
<Oscar Heras> wrote in message
news:
No lo concateno porque no me deja, me da error porque me intenta
concatenar el valor de @Var con '1', y me da error en la variable @Var

set @VariableAuxiliar = @Var + @Contador





Mira esto ;)

declare @n numeric
declare @vc varchar(2000)

set @n = 5;
set @vc = 'Hola'+ convert(varchar, @n) --Sin el convert peta

print @vc
Respuesta Responder a este mensaje
#4 Oscar Heras
07/10/2003 - 10:43 | Informe spam
Sí pero @vc contiene 'Hola5', y yo no quiero eso yo lo que quiero es
que dependiendo de un contador se utilice una variable u otra, pero el
modificando el nombre de la variable, no el valor de ésta



On Tue, 7 Oct 2003 10:39:47 +0200, "Tako" wrote:


<Oscar Heras> wrote in message
news:
No lo concateno porque no me deja, me da error porque me intenta
concatenar el valor de @Var con '1', y me da error en la variable @Var

set @VariableAuxiliar = @Var + @Contador





Mira esto ;)

declare @n numeric
declare @vc varchar(2000)

set @n = 5;
set @vc = 'Hola'+ convert(varchar, @n) --Sin el convert peta

print @vc

Respuesta Responder a este mensaje
#5 Tako
07/10/2003 - 12:43 | Informe spam
<Oscar Heras> wrote in message
news:
Sí pero @vc contiene 'Hola5', y yo no quiero eso yo lo que quiero es
que dependiendo de un contador se utilice una variable u otra, pero el
modificando el nombre de la variable, no el valor de ésta





Ahora entiendo, siento lo de antes.

Pues así a botepronto no se me ocurre, normalmente estas cosas se hacen
a base de arrays, pero TSQL no dispone de ellos. Otra forma rápida y limpia
no se me ocurren, de forma sucia supongo que podrás hacer alguno apaño a
base de SQL Dinámico o bien metiendo las 20 variables en un churro de texto,
separado por un determinado carácter y luego acceder con alguna funcioncilla
a la variable que desees, pero eso no dejan de ser apaños extraños.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida