Ayuda Cursores

17/10/2005 - 14:25 por RCM | Informe spam
Hola a todos.

Quiero utilizar un procedimiento almacenado para borrar tablas
temporales del servidor. Este es el código:

declare BorrarTablasTemporales cursor for

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.tables
WHERE TABLE_NAME like 'tmp_dist_%'

declare @TablaTemp nvarchar(50)

open BorrarTablasTemporales

fetch first from BorrarTablasTemporales
into @TablaTemp

while @@fetch_status = 0
begin

drop table @TablaTemp

fetch next from BorrarTablasTemporales
into @TablaTemp

end

deallocate BorrarTablasTemporales


El error que recibo es este:

Servidor: mensaje 170, nivel 15, estado 1, línea 26
Línea 26: sintaxis incorrecta cerca de '@TablaBorrar'.

Sin embargo, cuando hago el Drop Table tmp_dist_009, así, sin usar la
variable, sí que me funciona.

Advierto que estoy bastante pez en Transact, así que si es una chorrada, no
me regañeis mucho.

Gracias.
 

Leer las respuestas

#1 Lautaurus
17/10/2005 - 14:42 | Informe spam
Tienes que usar SQL dinámico para el DROP:

EXEC('DROP TABLE ' + @TablaTemp)


RCM escribió:
Hola a todos.

Quiero utilizar un procedimiento almacenado para borrar tablas
temporales del servidor. Este es el código:

declare BorrarTablasTemporales cursor for

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.tables
WHERE TABLE_NAME like 'tmp_dist_%'

declare @TablaTemp nvarchar(50)

open BorrarTablasTemporales

fetch first from BorrarTablasTemporales
into @TablaTemp

while @@fetch_status = 0
begin

drop table @TablaTemp

fetch next from BorrarTablasTemporales
into @TablaTemp

end

deallocate BorrarTablasTemporales


El error que recibo es este:

Servidor: mensaje 170, nivel 15, estado 1, línea 26
Línea 26: sintaxis incorrecta cerca de '@TablaBorrar'.

Sin embargo, cuando hago el Drop Table tmp_dist_009, así, sin usar la
variable, sí que me funciona.

Advierto que estoy bastante pez en Transact, así que si es una chorrada, no
me regañeis mucho.

Gracias.




Preguntas similares