ELIMINAR TABLAS CON UN CONSULTA SQL

26/01/2006 - 20:11 por CCALLOQUISPE PALOMINO | Informe spam
HOLA:

Desea ejecutar un query de la siguiente forma:

delete from sysibjects
where
name in ('TABLA_A','TABLA_B','TABLA_C')

pero me sale un error sobre el catalogo.

alguien me puede ayudar.

muchas gracias por su colaboracion

CCALLOQUISPE

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
26/01/2006 - 20:32 | Informe spam
CCALLOQUISPE PALOMINO,

Debes declarar un cursor basado en una select que devuelva el nombre de la
tabla, hacer el fetch en una variable y usar sql dinamico para ejecutar la
sentencia drop.


declare @sql nvarchar(4000)
declare @ts sysname
declare @tn sysname
declare cursor_tablas cursor
local, fast_foward
for
select TABLE_SCHEMA, TABLE_NAME
from INFORMATION_SCHEMA.TABLES
where
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsUserTable') = 1
and
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsMSShipped') = 0
and TABLE_SCHEMA = 'dbo'
and TABLE_NAME in ('tabla_a', 'tabla_b', 'tabla_c')

open cursor_tablas

while 1 = 1
begin
fetch next from cursor_tablas into @ts, @tn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'drop table [' + @ts + '].[' + @tn + ']'

print @sql
exec sp_executesql @sql
end

close cursor_tablas
deallocate cursor_tablas
go

Fijate que las tablas bienen sin order de dependencia, asi que si tratas de
eliminar una tabla que es referenciada por una restriccion de clave foranea
desde otra tabla, te dara error.


AMB


"CCALLOQUISPE PALOMINO" wrote:

HOLA:

Desea ejecutar un query de la siguiente forma:

delete from sysibjects
where
name in ('TABLA_A','TABLA_B','TABLA_C')

pero me sale un error sobre el catalogo.

alguien me puede ayudar.

muchas gracias por su colaboracion

CCALLOQUISPE
Respuesta Responder a este mensaje
#2 CCALLOQUISPE PALOMINO
26/01/2006 - 21:00 | Informe spam
muchas gracias por tu ayuda
CCALLOQUISPE


"Alejandro Mesa" escribió:

CCALLOQUISPE PALOMINO,

Debes declarar un cursor basado en una select que devuelva el nombre de la
tabla, hacer el fetch en una variable y usar sql dinamico para ejecutar la
sentencia drop.


declare @sql nvarchar(4000)
declare @ts sysname
declare @tn sysname
declare cursor_tablas cursor
local, fast_foward
for
select TABLE_SCHEMA, TABLE_NAME
from INFORMATION_SCHEMA.TABLES
where
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsUserTable') = 1
and
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsMSShipped') = 0
and TABLE_SCHEMA = 'dbo'
and TABLE_NAME in ('tabla_a', 'tabla_b', 'tabla_c')

open cursor_tablas

while 1 = 1
begin
fetch next from cursor_tablas into @ts, @tn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'drop table [' + @ts + '].[' + @tn + ']'

print @sql
exec sp_executesql @sql
end

close cursor_tablas
deallocate cursor_tablas
go

Fijate que las tablas bienen sin order de dependencia, asi que si tratas de
eliminar una tabla que es referenciada por una restriccion de clave foranea
desde otra tabla, te dara error.


AMB


"CCALLOQUISPE PALOMINO" wrote:

> HOLA:
>
> Desea ejecutar un query de la siguiente forma:
>
> delete from sysibjects
> where
> name in ('TABLA_A','TABLA_B','TABLA_C')
>
> pero me sale un error sobre el catalogo.
>
> alguien me puede ayudar.
>
> muchas gracias por su colaboracion
>
> CCALLOQUISPE
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida