SQL - drop table en procedimiento almacenado

 
Vista:

drop table en procedimiento almacenado

Publicado por moncho (3 intervenciones) el 27/09/2005 18:54:14
Hola a todos!!

Estoy trabajando con SQL Server 7.0 y tengo un procedimiento almacenado en el que intento eliminar una tabla cuyo nombre viene dado por un parámetro, algo tal que así:

1. Create Procedure EliminarTabla (@nombre_tabla varchar(40))
2. as
3. drop table @nombre_tabla

Al intentar compilarlo me da un error de sintáxis en la línea 3.

¿alguien me puede ayudar a solucionar el problema?

Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:drop table en procedimiento almacenado

Publicado por Juan Manuel (4 intervenciones) el 27/09/2005 20:13:04
Probá así

Create Procedure EliminarTabla
(
@nombre_tabla varchar(40)
)
as
exec 'drop table' + @nombre_tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:drop table en procedimiento almacenado

Publicado por Isaías (5073 intervenciones) el 27/09/2005 22:44:04
Para evitar que el EXEC con versiones posteriores no funcione, le sugiero cambiar por el store SP_EXECUTESQL.

Create Procedure EliminarTabla
(
@nombre_tabla varchar(40)
)
as
SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100)
SET @SQLString = N'DROP TABLE '+@nombre_tabla
EXECUTE SP_EXECUTESQL @SQLString
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:drop table en procedimiento almacenado

Publicado por moncho (3 intervenciones) el 27/09/2005 23:29:18
Gracias por la sugerencia Isaías. Creo que le haré caso y para evitar futuras incompatibilidades lo haré de este modo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:drop table en procedimiento almacenado

Publicado por moncho (3 intervenciones) el 27/09/2005 23:01:48
Para que funcione perfecto al exec le faltarían los paréntesis:

Create Procedure EliminarTabla
(
@nombre_tabla varchar(40)
)
as
exec ( 'drop table' + @nombre_tabla)

Gracias por la idea Juan Manuel!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar