Actualizar variable table mediante exec()

21/12/2009 - 16:32 por Luis Mata | Informe spam
Hola

Tengo un problema

creo una tabla con declare @tabla table(id int, campovariable varchar(15))

luego creo esto:

set @cadena = 'update @tabla set '+@campovariable+''
exec (@cadena)

esto ni funciona

set @cadena = 'update '+@tabla +' set '+ @campovariable +''
exec (@cadena)

esto tampoco funciona:

como puedo armar mi cadena que el exec lo pueda reconocer donde haya
unvolucrado un variable tabla.

Luis

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
21/12/2009 - 16:43 | Informe spam
La variable tabla tiene que estar dentro del script que ejecutas
dinámicamente. Recuerda que es una variable, y como tal sólo existe en el
contexto en el que la creaste. Para que funcione tendrías que ejecutar

SET @cadena = 'declare @tabla table(id int, campovariable varchar(15))
update @tabla set '+@campovariable+''
exec (@cadena)

Eso, o usar una tabla temporal

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Luis Mata" wrote in message
news:%
Hola

Tengo un problema

creo una tabla con declare @tabla table(id int, campovariable varchar(15))

luego creo esto:

set @cadena = 'update @tabla set '+@campovariable+''
exec (@cadena)

esto ni funciona

set @cadena = 'update '+@tabla +' set '+ @campovariable +''
exec (@cadena)

esto tampoco funciona:

como puedo armar mi cadena que el exec lo pueda reconocer donde haya
unvolucrado un variable tabla.

Luis

Respuesta Responder a este mensaje
#2 Luis Mata
21/12/2009 - 17:21 | Informe spam
ummm no me sirve hacer esto:
lo que sucede que en otro hilo me sugieren utilizar variable tabla
Prueba en vez de crear la tabla temporal, crea una variable de tipo table.

Puede ser no estoy seguro de que al ser tabla temporal, trate de crearla en
el tempdb local y no en el remoto.
-
pero en mi SP se hace referencia en muchas partes a la variable table, y no
me serviria hacer una cadena a un sp que son como 2 hojas A4.

mI problea es que la ejecucion de un SP me esta saturando el ancho ed banda,
bueno no solo uno varios. y aun no resuelvo si es por causa mis o falla del
sql 2008 sp1.

Y esto ya me suena a un error grave del sql. porque me perjudica mi Sistema.

Luis


"Carlos Sacristan" escribió en el mensaje de noticias
news:%
La variable tabla tiene que estar dentro del script que ejecutas
dinámicamente. Recuerda que es una variable, y como tal sólo existe en el
contexto en el que la creaste. Para que funcione tendrías que ejecutar

SET @cadena = 'declare @tabla table(id int, campovariable varchar(15))
update @tabla set '+@campovariable+''
exec (@cadena)

Eso, o usar una tabla temporal

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Luis Mata" wrote in message
news:%
Hola

Tengo un problema

creo una tabla con declare @tabla table(id int, campovariable
varchar(15))

luego creo esto:

set @cadena = 'update @tabla set '+@campovariable+''
exec (@cadena)

esto ni funciona

set @cadena = 'update '+@tabla +' set '+ @campovariable +''
exec (@cadena)

esto tampoco funciona:

como puedo armar mi cadena que el exec lo pueda reconocer donde haya
unvolucrado un variable tabla.

Luis




Respuesta Responder a este mensaje
#3 Aguardientico
22/12/2009 - 07:03 | Informe spam
Luis, prueba creandola como @@tabla para que sea una variable global y la
puedas ver dentro del contexto del sql dinamico.

"Luis Mata" wrote in message
news:
ummm no me sirve hacer esto:
lo que sucede que en otro hilo me sugieren utilizar variable tabla
Prueba en vez de crear la tabla temporal, crea una variable de tipo table.

Puede ser no estoy seguro de que al ser tabla temporal, trate de crearla
en
el tempdb local y no en el remoto.
-
pero en mi SP se hace referencia en muchas partes a la variable table, y
no
me serviria hacer una cadena a un sp que son como 2 hojas A4.

mI problea es que la ejecucion de un SP me esta saturando el ancho ed
banda,
bueno no solo uno varios. y aun no resuelvo si es por causa mis o falla
del
sql 2008 sp1.

Y esto ya me suena a un error grave del sql. porque me perjudica mi
Sistema.

Luis


"Carlos Sacristan" escribió en el mensaje de noticias
news:%
La variable tabla tiene que estar dentro del script que ejecutas
dinámicamente. Recuerda que es una variable, y como tal sólo existe en el
contexto en el que la creaste. Para que funcione tendrías que ejecutar

SET @cadena = 'declare @tabla table(id int, campovariable varchar(15))
update @tabla set '+@campovariable+''
exec (@cadena)

Eso, o usar una tabla temporal

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Luis Mata" wrote in message
news:%
Hola

Tengo un problema

creo una tabla con declare @tabla table(id int, campovariable
varchar(15))

luego creo esto:

set @cadena = 'update @tabla set '+@campovariable+''
exec (@cadena)

esto ni funciona

set @cadena = 'update '+@tabla +' set '+ @campovariable +''
exec (@cadena)

esto tampoco funciona:

como puedo armar mi cadena que el exec lo pueda reconocer donde haya
unvolucrado un variable tabla.

Luis








__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4707 (20091221) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com






__________ Information from ESET NOD32 Antivirus, version of virus signature database 4707 (20091221) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
Respuesta Responder a este mensaje
#4 Luis Mata
22/12/2009 - 19:10 | Informe spam
y como sera eso, porque me sale errores.

Luis
"Aguardientico" <gusgon1 at nospam dot com> escribió en el mensaje de
noticias news:
Luis, prueba creandola como @@tabla para que sea una variable global y la
puedas ver dentro del contexto del sql dinamico.

"Luis Mata" wrote in message
news:
ummm no me sirve hacer esto:
lo que sucede que en otro hilo me sugieren utilizar variable tabla
Prueba en vez de crear la tabla temporal, crea una variable de tipo
table.

Puede ser no estoy seguro de que al ser tabla temporal, trate de crearla
en
el tempdb local y no en el remoto.
-
pero en mi SP se hace referencia en muchas partes a la variable table, y
no
me serviria hacer una cadena a un sp que son como 2 hojas A4.

mI problea es que la ejecucion de un SP me esta saturando el ancho ed
banda,
bueno no solo uno varios. y aun no resuelvo si es por causa mis o falla
del
sql 2008 sp1.

Y esto ya me suena a un error grave del sql. porque me perjudica mi
Sistema.

Luis


"Carlos Sacristan" escribió en el mensaje de noticias
news:%
La variable tabla tiene que estar dentro del script que ejecutas
dinámicamente. Recuerda que es una variable, y como tal sólo existe en
el contexto en el que la creaste. Para que funcione tendrías que
ejecutar

SET @cadena = 'declare @tabla table(id int, campovariable varchar(15))
update @tabla set '+@campovariable+''
exec (@cadena)

Eso, o usar una tabla temporal

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Luis Mata" wrote in message
news:%
Hola

Tengo un problema

creo una tabla con declare @tabla table(id int, campovariable
varchar(15))

luego creo esto:

set @cadena = 'update @tabla set '+@campovariable+''
exec (@cadena)

esto ni funciona

set @cadena = 'update '+@tabla +' set '+ @campovariable +''
exec (@cadena)

esto tampoco funciona:

como puedo armar mi cadena que el exec lo pueda reconocer donde haya
unvolucrado un variable tabla.

Luis








__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4707 (20091221) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com






__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4707 (20091221) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com



Respuesta Responder a este mensaje
#5 Aguardientico
27/12/2009 - 01:15 | Informe spam
Lo siento Luis fue un lapsus brutus. Me confundí entre # y ## con @ y @@, no
se puede usar la doble arroba.

"Luis Mata" wrote in message
news:
y como sera eso, porque me sale errores.

Luis
"Aguardientico" <gusgon1 at nospam dot com> escribió en el mensaje de
noticias news:
Luis, prueba creandola como @@tabla para que sea una variable global y la
puedas ver dentro del contexto del sql dinamico.

"Luis Mata" wrote in message
news:
ummm no me sirve hacer esto:
lo que sucede que en otro hilo me sugieren utilizar variable tabla
Prueba en vez de crear la tabla temporal, crea una variable de tipo
table.

Puede ser no estoy seguro de que al ser tabla temporal, trate de crearla
en
el tempdb local y no en el remoto.
-
pero en mi SP se hace referencia en muchas partes a la variable table, y
no
me serviria hacer una cadena a un sp que son como 2 hojas A4.

mI problea es que la ejecucion de un SP me esta saturando el ancho ed
banda,
bueno no solo uno varios. y aun no resuelvo si es por causa mis o falla
del
sql 2008 sp1.

Y esto ya me suena a un error grave del sql. porque me perjudica mi
Sistema.

Luis


"Carlos Sacristan" escribió en el mensaje de
noticias news:%
La variable tabla tiene que estar dentro del script que ejecutas
dinámicamente. Recuerda que es una variable, y como tal sólo existe en
el contexto en el que la creaste. Para que funcione tendrías que
ejecutar

SET @cadena = 'declare @tabla table(id int, campovariable varchar(15))
update @tabla set '+@campovariable+''
exec (@cadena)

Eso, o usar una tabla temporal

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Luis Mata" wrote in message
news:%
Hola

Tengo un problema

creo una tabla con declare @tabla table(id int, campovariable
varchar(15))

luego creo esto:

set @cadena = 'update @tabla set '+@campovariable+''
exec (@cadena)

esto ni funciona

set @cadena = 'update '+@tabla +' set '+ @campovariable +''
exec (@cadena)

esto tampoco funciona:

como puedo armar mi cadena que el exec lo pueda reconocer donde haya
unvolucrado un variable tabla.

Luis








__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4707 (20091221) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com






__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4707 (20091221) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com







__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4710 (20091222) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com






__________ Information from ESET NOD32 Antivirus, version of virus signature database 4717 (20091226) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida