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.

Preguntas similare

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.




Respuesta Responder a este mensaje
#2 RCM
17/10/2005 - 14:45 | Informe spam
Muchísimas gracias.

Un saludo.


"Lautaurus" escribió en el mensaje
news:43539c49$0$41144$
Tienes que usar SQL dinámico para el DROP:

EXEC('DROP TABLE ' + @TablaTemp)

Respuesta Responder a este mensaje
#3 Maxi
17/10/2005 - 14:52 | Informe spam
Hola, no creo que sea una buena practica borrar tablas temporales porque
si!! si estan es porque alguien las esta usando, o con que criterio las vas
a borrar? sabias que las tablas temporales tienen un alcance y que por ej si
se cierra la conexion ya se mueren


Salu2
Maxi [MVP SQL SERVER]


"RCM" escribió en el mensaje
news:AKM4f.4671086$
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.




Respuesta Responder a este mensaje
#4 Carlos Sacristán
17/10/2005 - 15:17 | Informe spam
Estoy de acuerdo con Maxi. No tiene sentido crear un script para borrar
tablas que, como su propio nombre indica, son temporales. Si lo que te
ocurre es que siguen existiendo aún cuando no deberían estar, se deberá a
que no se cierran las conexiones o algún proceso sigue corriendo...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"RCM" escribió en el mensaje
news:AKM4f.4671086$
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.




Respuesta Responder a este mensaje
#5 Lautaurus
17/10/2005 - 15:25 | Informe spam
Maxi, sólo las tablas cuyo nombre empieza por # se mueren al cerrar la
conexion.


Maxi escribió:
Hola, no creo que sea una buena practica borrar tablas temporales porque
si!! si estan es porque alguien las esta usando, o con que criterio las vas
a borrar? sabias que las tablas temporales tienen un alcance y que por ej si
se cierra la conexion ya se mueren

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida