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

Sql Server (Procedimiento Almacenad)

Estas en el tema de Sql Server (Procedimiento Almacenad) en el foro de Bases de Datos General en Foros del Web. Hola buenas tardes !!! Estoy intentando hacer un procedimiento almacenado, el cual recibe un parametro y despues crea una tabla nueva antes de eliminar la ...
  #1 (permalink)  
Antiguo 18/02/2005, 11:12
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Sql Server (Procedimiento Almacenad)

Hola buenas tardes !!!

Estoy intentando hacer un procedimiento almacenado, el cual recibe un parametro y despues crea una tabla nueva antes de eliminar la vieja.

La cuestión es que cuando ejecute este procedimiento almacenado, me borrará una tabla qeu haya metido como parámetro, pero antes de eliminarla creará una Tabla con datos históricos:

Lo que tengo hecho es lo siguiente:

CREATE PROCEDURE EliminarTabla @ttabla varchar(30) AS
create table 'tmp'+@ttabla(id int NOT NULL) --ME FALLA
insert into 'tmp'+@ttabla(campo) select campo from @ttabla
go

En fin, ¿Como hago en transact-Sql para enlazar texto con un parámetro?

Me imagino que esta no es la formá mas correcta de copiar tablas(Pero más que nada lo hago para aprender a concatenar), ¿Como podría copiar todo el contenido de una tabla a otra con distinto nombre?

En fin, haber si pueden ayudarme a estas dos preguntas.

Desde ya, os estoy muy AGRADECIDO.

Saludos Cordiales.
__________________
Charlie.
  #2 (permalink)  
Antiguo 18/02/2005, 12:21
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Prueba a hacerlo de forma dinámica utilizando la instrucción exec.
Exec se puede utilizar para ejecutar una variable de cadena. En esta variable de cadena incluyes el código transact sql que quieras.

Ej:

declare @sql varchar(100)
set @sql='select * from tabla'
exec(@sql)

Con instrucciones select funciona seguro y supongo que con create, insert, delete ... también funcionará.

En tu caso sería algo así:

declare @sql varchar(1000) --declárala del tamaño que necesites
set @sql='create table tmp'+@ttabla+'(id int NOT NULL)'
exec(@sql)

Prueba a enlazar todo el código que necesitas en la variable o hacer varios exec.

Espero que te funcione.
Salu2.

Última edición por cableh; 18/02/2005 a las 12:23
  #3 (permalink)  
Antiguo 22/02/2005, 14:43
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
En términos de procesador es mas eficiente usar

EXEC sp_executesql @sql
que
EXEC (@sql)

Por razones de recompilaciones y optimizaciones de codigo (interno).
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 22/02/2005, 15:29
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
donde puedo ver todas esas funciones, como se ocupan y cuales existen?? (EXEC, GO, BEGIN, DECLARE, IF...) se ven utiles y yo tengo todos los QUERYS de PHP en procedimientos almacenados, pero me tengo que limitar solo a las consulta "basicas", de SQL osea: SELECT, WHERE, SET, IN, ON, INNERJOIN, etc... ya que no conosco las otras
  #5 (permalink)  
Antiguo 22/02/2005, 18:06
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Las tienes todas en los Books Online de SQL Server (la ayuda), y vienen descritas con bastante aplitud. Se instalan junto con las herramientas de cliente de SQL Server
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 23/02/2005, 11:07
 
Fecha de Ingreso: mayo-2004
Ubicación: Santiago, Chile
Mensajes: 191
Antigüedad: 20 años
Puntos: 1
Cita:
Iniciado por Mithrandir
Las tienes todas en los Books Online de SQL Server (la ayuda), y vienen descritas con bastante aplitud. Se instalan junto con las herramientas de cliente de SQL Server
"Books Online de SQL Server"... eso es "SQL Server 2000" ??

En todo caso con la ayuda del que tengo (SQL Server 7.0) creo que me basta. Ya se a lo que te refieres con "bastante aplitud"

thanks!
  #7 (permalink)  
Antiguo 24/02/2005, 16:18
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
jeje, debio haber sido "amplitud"

Si mal no recuerdo en SQL Server 7 tambien se llama Books Online a la ayuda. Aunque obviamente la ayuda viene para la version 7 del servidor.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 12:48.