Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 17-08-2005
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 22
Xianto Va por buen camino
Este es para generar el string de creación de una tabla ya existente...
Como ???
Pues, si tengo una tabla en mi DB que se llama Albaranes y en un procedimientos por un motivo X, necesito hacer una tabla temporal con su misma estructura, podemos hacerlo facilmente con este procedimiento que me retorna el string de creación de la tabla, pero de forma temporal #

Código:
  
CREATE PROCEDURE crea_tabla
 @tabla varchar(50),
 @tabli varchar(50)
AS

Declare @id int, @campo varchar(200), @tipo varchar(100), @tamano int, @collation bit, @sql varchar(5000)
Declare @Temporal Table (campo varchar(200), tipo varchar(100), tamano int, collation bit, orden int)
select @id=id from sysobjects (nolock) where name=@tabla
insert into @Temporal
select sc.name, sy.name, sc.length, 1, sc.colid from syscolumns sc (nolock)
 inner join systypes sy (nolock) on
  sc.xtype=sy.xtype and sc.id=@id and sc.collation is null
insert into @Temporal
select sc.name, sy.name, sc.length, 0, sc.colid from syscolumns sc (nolock)
 inner join systypes sy (nolock) on
  sc.xtype=sy.xtype and sc.id=@id and sc.collation is not null
set @sql='Create Table #'+@tabli+' ('
While exists(select top 1 * from @Temporal)
 Begin
  select top 1 @campo=campo, @tipo=tipo, @tamano=tamano, @collation=collation
	from @Temporal order by orden
  if @collation=0
   set @sql=@sql+@campo+' '+@tipo+'('+cast(@tamano as varchar)+'), '
  else  
   set @sql=@sql+@campo+' '+@tipo+', '
  
  delete @Temporal where campo=@campo
 End
set @sql=substring(@sql,1,len(@sql)-1)+')'
select @sql
GO
Entonces, ejecutando algo como:
Código:
crea_tabla 'Original', 'Copia'
Recibo del procedimiento algo asi:

Código:
Create Table #Copia (Cod_Producto varchar(50), Cod_proveedor int, 
Cod_Fam_Pro int, Nombre_Producto varchar(100), Descrip_Producto varchar(200)
, Fec_Alta datetime, Estado bit, Cod_EAN varchar(20), 
Cod_Pro_proveedor varchar(20), cod_proveedor0 int, cod_producto0 varchar(50)
, tipo varchar(50), filler varchar(100), gramos int, unidades float, 
coste_material float, coste_produccion float, iva float)
Bue, espero les sirva de algo... jejeje
__________________
El diseño dira si tiene futuro...
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:37:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi