사용자 도구

사이트 도구


sqlserver:table_info

Table Information

CREATE OR ALTER       PROCEDURE [dbo].[P_INFO_TABLE]   
    @TABLE_NAME     sysname,
    @table_schema   sysname = NULL
AS  
SELECT CASE WHEN A.ORDINAL_POSITION = 1 THEN A.TABLE_NAME ELSE '' END AS TABLE_NAME,
       CASE WHEN A.ORDINAL_POSITION = 1 THEN C.TABLE_COMMENT ELSE '' END AS TABLE_COMMENT,
       A.COLUMN_NAME,
       B.COLUMN_COMMENT,
	   A.DATA_TYPE,
       ISNULL(CAST(A.CHARACTER_MAXIMUM_LENGTH AS VARCHAR),
              ISNULL(CAST(A.NUMERIC_PRECISION AS VARCHAR) + ',' + CAST(A.NUMERIC_SCALE AS VARCHAR),
			         '')) AS COLUMN_LENGTH,
	   CASE WHEN A.IS_NULLABLE = 'YES' THEN 'Y' ELSE 'N' END AS IS_NULLABLE,
       CASE WHEN A.COLUMN_DEFAULT IS NOT NULL THEN A.COLUMN_DEFAULT ELSE '' END AS COLUMN_DEFAULT,
		   A.COLUMN_NAME + N', -- ' + ISNULL(CONVERT(VARCHAR(MAX), B.COLUMN_COMMENT),'') AS WOW
  FROM INFORMATION_SCHEMA.COLUMNS A
  LEFT OUTER JOIN (SELECT OBJNAME COLUMN_NAME , VALUE COLUMN_COMMENT
			FROM ::FN_LISTEXTENDEDPROPERTY(NULL, isnull(@table_schema,'user'), 'DBO', 'TABLE', @TABLE_NAME, 'COLUMN', DEFAULT)
			WHERE NAME = 'MS_Description'
		) B
    ON A.COLUMN_NAME =  B.COLUMN_NAME COLLATE Korean_Wansung_CI_AS
  LEFT OUTER JOIN (
  			SELECT OBJNAME AS TABLE_NAME,
  			       VALUE TABLE_COMMENT
  			  FROM ::FN_LISTEXTENDEDPROPERTY (N'MS_Description', isnull(@table_schema,'user'),'dbo','table', @TABLE_NAME, NULL, NULL)
       ) C
    ON A.TABLE_NAME = C.TABLE_NAME COLLATE Korean_Wansung_CI_AS
 WHERE A.TABLE_NAME = @TABLE_NAME
 ORDER BY A.TABLE_NAME, A.ORDINAL_POSITION
sqlserver/table_info.txt · 마지막으로 수정됨: 2025/04/15 10:05 저자 127.0.0.1