Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/12/2010, 07:29
Avatar de PosProdukcion
PosProdukcion
 
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Respuesta: Query para obtener los campos de una tabla y su tipo - SQL Server

Código SQL:
Ver original
  1. SELECT OBJ.id AS id_tabla,
  2.         ROW_NUMBER() OVER (ORDER BY COL.colid) AS id_columna,
  3.         COL.name AS columna,
  4.         TYP.name AS Tipo,
  5.         --Por algun motivo los nvarchar dan el doble de la longitud
  6.         Longitud = CASE TYP.name
  7.             WHEN 'nvarchar' THEN COL.LENGTH/2
  8.             WHEN 'varchar' THEN COL.LENGTH/2
  9.             ELSE COL.LENGTH
  10.             END,
  11.         COL.xprec AS PRECISION,
  12.         COL.xscale AS escala,
  13.         COL.isnullable AS Isnullable,
  14.         FK.constid AS id_fk,
  15.         OBJ2.name AS table_derecha,
  16.         COL2.name
  17.         --COL.*
  18.     FROM dbo.syscolumns COL
  19.     JOIN dbo.sysobjects OBJ ON OBJ.id = COL.id
  20.     JOIN dbo.systypes TYP ON TYP.xusertype = COL.xtype
  21.     --left join dbo.sysconstraints CON on CON.colid = COL.colid
  22.     LEFT JOIN dbo.sysforeignkeys FK ON FK.fkey = COL.colid AND FK.fkeyid=OBJ.id
  23.     LEFT JOIN dbo.sysobjects OBJ2 ON OBJ2.id = FK.rkeyid
  24.     LEFT JOIN dbo.syscolumns COL2 ON COL2.colid = FK.rkey AND COL2.id = OBJ2.id
  25.     WHERE OBJ.name = @tabla AND (OBJ.xtype='U' OR OBJ.xtype='V')