Estructura de una tabla en MSSQL

Script para ver los campos de una tabla en Microsoft SQL Server

Estructura de los campos de una Tabla con Microsoft SQL

Tanto en el sistema de base de datos relacional de Oracle como en MySQL existe la instrucción DESCRIBE que te permite conocer la estructura de una tabla, es decir, todos los campos que contiene y de qué tipo son. En cambio, en la base de datos de Microsoft no hay ninguna instrucción predefinida equivalente a DESCRIBE.

Es por ello que hemos creado un script que al ejecutarse mostrará toda la información sobre los campos de la tabla que queramos (nombre, tipo, precisión, escala, permite nulos, valor por defecto, si es clave primaria y nombre del indice si tiene). El código es el siguiente:

CREATE Procedure MostrarEstructura(
        @TableName varchar(50)
)
AS
IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[dbo].['+@tableName+']')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
  SELECT
    cols.name as 'Nombre del Campo',
    typs.name as 'Tipo de Datos',
    cols.prec as 'Precisión',
    cols.Scale as 'Escala',
    Allownulls as 'Permite Nulos',
    c.text as 'Valor por Defecto',
    pk.xtype AS 'Primary Key',
    indx.name as 'Nombre del Índice'
  FROM sysobjects sobj
  INNER JOIN syscolumns cols ON sobj.id=cols.id
  INNER JOIN systypes typs ON cols.xusertype=typs.xusertype
  LEFT JOIN syscomments c ON cdefault=c.id
  LEFT JOIN  sysindexkeys ik ON ik.id = cols.id AND ik.colid = cols.colid
  LEFT JOIN  sysindexes indx ON indx.id = ik.id AND indx.indid = ik.indid
  LEFT JOIN  sysobjects pk ON indx.name = pk.name AND pk.parent_obj = indx.id AND pk.xtype = 'PK'
  WHERE cols.id = OBJECT_ID(@tableName)
ELSE
PRINT 'No existe ninguna tabla llamada '+@tableName + ' en la base de datos ' + db_name() + '.'
RETURN

Este código crea una función (Procedure) donde se comprueba si la tabla existe. Si existe se seleccionan los campos necesarios de diferentes tablas del sistema dónde está guardada la información de los campos de la tabla entrada.

Para que este script funcione deberemos ejecutarlo una vez para que Microsoft SQL Server la guarde. Posteriormente ya podremos llamar la función pasándole como parámetro el nombre de la tabla. Por ejemplo:

MostrarEstructura NombreTabla;