Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error "must declare the table variable @TAB"

Estas en el tema de Error "must declare the table variable @TAB" en el foro de SQL Server en Foros del Web. Buenos días, Bueno tampoco tan buenos, ya que estoy intentando como hacerlo pero no me sale. Os comento, SQL Server, Programmability, types, user.defined Table Types, ...
  #1 (permalink)  
Antiguo 05/03/2015, 02:31
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Error "must declare the table variable @TAB"

Buenos días,
Bueno tampoco tan buenos, ya que estoy intentando como hacerlo pero no me sale.

Os comento, SQL Server, Programmability, types, user.defined Table Types, he declarado una tabla llamada Tabla_IDs.
Tengo un procedimiento al que le paso esta tabla con su contenido. Os pongo el procedimiento almacenado para que se vea mejor.
Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[Actualizar_Servicios]
  2.     @TAB AS dbo.Tabla_IDS READONLY
  3. AS
  4. DECLARE @INT NVARCHAR(100)
  5. BEGIN
  6.     DECLARE @SQLSTRING NVARCHAR(1000)
  7.  
  8.     SET @SQLSTRING=N'UPDATE Servicio SET TRASPASO=TRASPASO+1 FROM Servicio INNER JOIN @TAB tab ON tab.ID = Servicio.ID'
  9.  
  10.     EXEC SP_EXECUTESQL @SQLSTRING    
  11. END

El problema es que al ejecutarlo me dice que "must declare the table variable @TAB"

No se que me he dejado por el camino para que no me reconozca la tabla

Alguien me puede ayudar?
__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 05/03/2015, 08:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error "must declare the table variable @TAB"

sencillo aqui esta el error:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[Actualizar_Servicios]
  2.     @TAB AS dbo.Tabla_IDS READONLY
  3. AS
  4. DECLARE @INT NVARCHAR(100)
  5. BEGIN
  6.     DECLARE @SQLSTRING NVARCHAR(1000)
  7.  
  8.     SET @SQLSTRING=N'UPDATE Servicio SET TRASPASO=TRASPASO+1 FROM Servicio INNER JOIN ' +  @TAB + ' as tab ON tab.ID = Servicio.ID'
  9.  
  10.     EXEC SP_EXECUTESQL @SQLSTRING    
  11. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 05/03/2015, 10:32
 
Fecha de Ingreso: febrero-2015
Ubicación: Santiago
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Error "must declare the table variable @TAB"

Libras entrega muy buenos códigos...

Pero podrías explicar un poco., lo digo para que las personas que no sabe mucho puedan entender también el error :)

Saludos!
  #4 (permalink)  
Antiguo 05/03/2015, 10:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error "must declare the table variable @TAB"

En realidad no hace falt explicar mucho. Con sólo comparar ambos códigos se percibe la diferencia:
Mal:
Código SQL:
Ver original
  1. SET @SQLSTRING=N'UPDATE Servicio SET TRASPASO=TRASPASO+1 FROM Servicio
  2. INNER JOIN @TAB tab ON tab.ID = Servicio.ID'
Bien:
Código SQL:
Ver original
  1. SET @SQLSTRING=N'UPDATE Servicio SET TRASPASO=TRASPASO+1 FROM Servicio
  2. INNER JOIN ' +  @TAB + ' as tab ON tab.ID = Servicio.ID'

Da la impresión de que @maialenlopez está confundiendo el SQL con PHP, donde la sola presencia de una variable dentro de una cadena de texto hace que se reemplace la variable por su contenido...
Acá no funciona del mismo modo, y el contexto de existencia del SQL en la cadena es diferente al contexto de existencia de la variable en el SP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/03/2015, 10:55
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Error "must declare the table variable @TAB"

una duda , porque defines la tabla como una variable cuando no es variable ... ya que al darle el valor arriba es estatica.. o me equivoco?

Saludos,
  #6 (permalink)  
Antiguo 09/03/2015, 11:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error "must declare the table variable @TAB"

como que la tabla no es variable??? se esta haciendo una consulta dinamica donde el valor de la "tabla" depende del parametro que se esta pasando, asi esta consulta puede funcionar para cualquier tabla de la base de datos(siempre y cuando tenga una columna llamada ID de tipo entero jejejeje)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 09/03/2015, 11:07
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Error "must declare the table variable @TAB"

Cita:
Iniciado por Libras Ver Mensaje
como que la tabla no es variable??? se esta haciendo una consulta dinamica donde el valor de la "tabla" depende del parametro que se esta pasando, asi esta consulta puede funcionar para cualquier tabla de la base de datos(siempre y cuando tenga una columna llamada ID de tipo entero jejejeje)
Disculpa pero aquí no le asigna el valor?

Código SQL:
Ver original
  1. @TAB AS dbo.Tabla_IDS READONLY

Tengo mis dudas... ya que para que EL NOMBRE DE LA TABLA SEA VARIABLE

no es necesario ponerle ese codigo no? basta con @TAB ...

:D
  #8 (permalink)  
Antiguo 09/03/2015, 11:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error "must declare the table variable @TAB"

aaaa tienes mucha razon, no me fije en el parametro del procedure, pero si, simplemente con el

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[Actualizar_Servicios]
  2.    ( @TAB VARCHAR(MAX)
  3. AS

es mas que suficiente :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 09/03/2015, 16:16
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Error "must declare the table variable @TAB"

Cita:
Iniciado por Libras Ver Mensaje
aaaa tienes mucha razon, no me fije en el parametro del procedure, pero si, simplemente con el

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[Actualizar_Servicios]
  2.    ( @TAB VARCHAR(MAX)
  3. AS

es mas que suficiente :)
Exacto, por eso mi pregunta del porque usa una variable si al final la hace estatica :D

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.