error con exec

08/03/2007 - 21:12 por Aldo Salvado | Informe spam
Hola a todos, Sres alguien sabe porque cuando ejecuto lo siguiente

declare @sqla varchar(1000)

Set @sqla = 'Create Table #tRes([070101] varchar(30) ,[070102] varchar(30)
,[070103] varchar(30) ,[070104] varchar(30) )'

Exec @sqla

me indica el siguiente error :

Servidor: mensaje 203, nivel 16, estado 2, línea 4
El nombre 'Create Table #tRes([070101] varchar(30) ,[070102] varchar(30)
,[070103] varchar(30) ,[070104] varchar(30) )' no es un identificador
válido.


de antemano, muchas gracias.

Aldo.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
08/03/2007 - 20:18 | Informe spam
Prueba

declare @sqla varchar(1000)
Set @sqla = 'Create Table #tRes([070101] varchar(30) ,[070102] varchar(30)

,[070103] varchar(30) ,[070104] varchar(30) )'

Exec (@sqla)

"Aldo Salvado" escribió en el mensaje
news:
Mostrar la cita
#2 Alejandro Mesa
08/03/2007 - 21:09 | Informe spam
Aldo Salvado,

Con el permiso de Carlos.

Mostrar la cita
Mala suposicion. EXEC(string) y/o sp_exectesql se ejecutan en otro contexto,
fuera del alcance del procedimineto que lo ejecuta, y por lo tanto cualquier
tabla temporal local no sera vista por el procedimiento / batch que ejecuta
la sentencia dinamicamente.

Compartir datos entre procedimientos almacenados
http://www.hayes.ch/sql/compartir_datos.html


AMB


"Aldo Salvado" wrote:

Mostrar la cita
#3 Aldo Salvado
08/03/2007 - 21:30 | Informe spam
Carlos, se supone que esto deberia crear la tabla ?, lo que sucede es que
hago un select a #tRes y no encuentra el objeto . .


Gracias nuevamente.

Aldo.



"Carlos Sacristan" <nomail> escribió en el mensaje
news:
Mostrar la cita
#4 Carlos Sacristan
09/03/2007 - 11:12 | Informe spam
Hola Alejandro,

eso es lo que yo tenía claro hasta que haciendo pruebas me encontré con
que si se crea una tabla temporal y luego se intenta acceder a ella mediante
EXEC(@sql), no falla. Ejemplo:

declare @sqla varchar(1000)

Set @sqla = 'Create Table #t(a INT) '

Exec (@sqla)


select * from #t

go

Create Table #t(a INT)


exec('select * from #t')

"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#5 Aldo Salvado
09/03/2007 - 14:56 | Informe spam
Gracias, me ha quedo muy claro.

Saludos.

Aldo.

"Aldo Salvado" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida