Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/03/2011, 04:07
Avatar de Joch_pa
Joch_pa
 
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Generar programaticamente script CREATE TABLE de tabla ya existente con T-

acabo de generar el siguiente script(con mucha imaginacion), aun falta algunos datos que pides(solo genera el script de la tabla), pero creo lo puedes complementar o mejorar (ya me dio flojera terminarlo) [espero te sirva]
Código SQL:
Ver original
  1. CREATE PROCEDURE dbo.generaScript_sp
  2.     @tabla VARCHAR(40)
  3. AS
  4.     DECLARE @id INT
  5.     --obtener el id de la tabla
  6.         SET @id = isnull((SELECT id FROM dbo.sysobjects WHERE id = object_id(N'[dbo].['+ @tabla +']') AND OBJECTPROPERTY(id, N'IsUserTable') = 1),0)
  7.  
  8.     IF @id<>0
  9.     BEGIN
  10.         SELECT
  11.             campo
  12.         FROM (
  13.             SELECT 'create table dbo.' + @tabla + '( campo numeric(9) null' AS campo, 0 AS colorder
  14.             UNION
  15.             SELECT ', ['+CONVERT(sysname,c.name) + '] ' +
  16.                 t.name + CASE t.name WHEN 'datetime' THEN ' ' ELSE '('+CONVERT(VARCHAR,CASE WHEN d.DATA_TYPE IN (6,7) THEN d.data_precision ELSE OdbcPrec(c.xtype,c.LENGTH,c.xprec) END) + ') ' END + (
  17.                 CASE CONVERT(INT, ColumnProperty (c.id, c.name, 'AllowsNull')) WHEN 1 THEN 'NULL' WHEN 0 THEN '' END)+ ' Default ' + isnull(text,'NULL') AS Campo,c.colorder
  18.             FROM
  19.                 sysobjects o,
  20.                 master.dbo.spt_datatype_info d,
  21.                 systypes t,
  22.                 syscolumns c
  23.                 LEFT OUTER JOIN syscomments m ON c.cdefault = m.id AND m.colid = 1
  24.             WHERE
  25.                 o.id = @id
  26.                 AND c.id = o.id
  27.                 AND t.xtype = d.ss_dtype
  28.                 AND c.LENGTH = isnull(d.fixlen, c.LENGTH)
  29.                 AND (d.ODBCVer IS NULL OR d.ODBCVer = 2)
  30.                 AND (o.TYPE NOT IN ('P', 'FN', 'TF', 'IF') OR (o.TYPE IN ('TF', 'IF') AND c.NUMBER = 0))
  31.                 AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty (c.id, c.name, 'IsIdentity'),0)
  32.                 AND c.xusertype = t.xusertype
  33.             UNION
  34.             SELECT ')',9999998 AS colorder
  35.             UNION
  36.             SELECT 'alter table ' + @tabla + ' drop column [campo]',9999999 AS colorder
  37.         )B
  38.         ORDER BY colorder
  39.     END
  40.  
  41. GO
  42.  
  43. EXEC generaScript_sp 'tutabla'