Mssql'de Tablo Alanlarını Getiren T-SQL Table Function



set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


CREATE FUNCTION [dbo].[AlanlariGetir]
(
    @TabloAdi nvarchar(100)
)
RETURNS @Results TABLE (adi nvarchar(255),tip nvarchar(50),uzunluk int)
AS


BEGIN
    
    INSERT INTO @Results
    (
        adi,
        tip,
        uzunluk
    )

    SELECT c.name AS adi,type_name(c.xusertype) AS tip,c.length AS uzunluk
    FROM   syscolumns c
    LEFT JOIN (sysobjects o
    INNER JOIN syscomments co ON o.id = co.id)
      ON   c.cdefault = o.id LEFT JOIN (sysobjects o2
    INNER JOIN syscomments co2 ON o2.id = co2.id)
      ON   c.domain = o2.id
    WHERE  c.id = OBJECT_ID(@TabloAdi)
    ORDER BY c.colid;
           
    return
END

Kullanımı :

SELECT
* FROM [dbo].[AlanlariGetir]('Meslekler')

Sonuç :

adi              tip                   uzunluk
---------------- --------------------- -----------
meslekid         int                   4
meslekadi        nvarchar              300

(2 row(s) affected)