해당 스키마에 존재하는 테이블에 대한 구조를 쿼리를 통해서 가져옵니다.
SQL Server에서는 사용해보지 않았습니다. Oracle에서 사용!!
SELECT DECODE(COLUMN_ID, 1, A1.TABLE_NAME, '') TABLE_NAME
,DECODE(COLUMN_ID, 1, A1.TABLE_COMMENTS, '') TABLE_COMMENTS
,A1.COLUMN_ID
,A1.COLUMN_NAME
,A1.COLUMN_COMMENTS
,DECODE(B1.CONSTRAINT_TYPE, 'P', 'Y') PK_FLAG
,DECODE(A1.NULL_FLAG, '', 'NOT NULL', '') NULL_FLAG
,A1.DATA_TYPE || (CASE A1.DATA_TYPE WHEN 'NUMBER' THEN '(' || TO_CHAR(A1.DATA_LENGTH) || ',' || TO_CHAR(A1.DATA_PRECISION) || ')'
WHEN 'DATE' THEN ' '
ELSE '(' || A1.DATA_LENGTH || ')' END) DATA_TYPE
,C1.DATA_DEFAULT
FROM
(
SELECT B.COMMENTS TABLE_COMMENTS
,A.TABLE_NAME TABLE_NAME
,C.COMMENTS COLUMN_COMMENTS
,A.COLUMN_NAME COLUMN_NAME
,(CASE A.NULLABLE WHEN 'Y' THEN 'Y' END) NULL_FLAG
, A.DATA_TYPE DATA_TYPE
, A.DATA_LENGTH
, A.COLUMN_ID AS COLUMN_ID
, A.DATA_PRECISION
FROM USER_TAB_COLUMNS A
,USER_TAB_COMMENTS B
,USER_COL_COMMENTS C
WHERE A.TABLE_NAME = B.TABLE_NAME
AND (A.TABLE_NAME = C.TABLE_NAME AND A.COLUMN_NAME = C.COLUMN_NAME)
AND B.TABLE_TYPE = 'TABLE'
) A1,
(
SELECT A.TABLE_NAME
,A.COLUMN_NAME
,B.CONSTRAINT_TYPE
FROM USER_CONS_COLUMNS A
,USER_CONSTRAINTS B
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND B.CONSTRAINT_TYPE IN ('P', 'R')
) B1,
(
SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE DATA_DEFAULT IS NOT NULL
) C1
WHERE A1.TABLE_NAME = B1.TABLE_NAME(+)
AND A1.COLUMN_NAME = B1.COLUMN_NAME(+)
AND A1.TABLE_NAME = C1.TABLE_NAME(+)
AND A1.COLUMN_NAME = C1.COLUMN_NAME(+)
ORDER BY A1.TABLE_NAME, A1.COLUMN_ID
SELECT DECODE(COLUMN_ID, 1, A1.TABLE_NAME, '') TABLE_NAME
,DECODE(COLUMN_ID, 1, A1.TABLE_COMMENTS, '') TABLE_COMMENTS
,A1.COLUMN_ID
,A1.COLUMN_NAME
,A1.COLUMN_COMMENTS
,DECODE(B1.CONSTRAINT_TYPE, 'P', 'Y') PK_FLAG
,DECODE(A1.NULL_FLAG, '', 'NOT NULL', '') NULL_FLAG
,A1.DATA_TYPE || (CASE A1.DATA_TYPE WHEN 'NUMBER' THEN '(' || TO_CHAR(A1.DATA_LENGTH) || ',' || TO_CHAR(A1.DATA_PRECISION) || ')'
WHEN 'DATE' THEN ' '
ELSE '(' || A1.DATA_LENGTH || ')' END) DATA_TYPE
,C1.DATA_DEFAULT
FROM
(
SELECT B.COMMENTS TABLE_COMMENTS
,A.TABLE_NAME TABLE_NAME
,C.COMMENTS COLUMN_COMMENTS
,A.COLUMN_NAME COLUMN_NAME
,(CASE A.NULLABLE WHEN 'Y' THEN 'Y' END) NULL_FLAG
, A.DATA_TYPE DATA_TYPE
, A.DATA_LENGTH
, A.COLUMN_ID AS COLUMN_ID
, A.DATA_PRECISION
FROM USER_TAB_COLUMNS A
,USER_TAB_COMMENTS B
,USER_COL_COMMENTS C
WHERE A.TABLE_NAME = B.TABLE_NAME
AND (A.TABLE_NAME = C.TABLE_NAME AND A.COLUMN_NAME = C.COLUMN_NAME)
AND B.TABLE_TYPE = 'TABLE'
) A1,
(
SELECT A.TABLE_NAME
,A.COLUMN_NAME
,B.CONSTRAINT_TYPE
FROM USER_CONS_COLUMNS A
,USER_CONSTRAINTS B
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND B.CONSTRAINT_TYPE IN ('P', 'R')
) B1,
(
SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE DATA_DEFAULT IS NOT NULL
) C1
WHERE A1.TABLE_NAME = B1.TABLE_NAME(+)
AND A1.COLUMN_NAME = B1.COLUMN_NAME(+)
AND A1.TABLE_NAME = C1.TABLE_NAME(+)
AND A1.COLUMN_NAME = C1.COLUMN_NAME(+)
ORDER BY A1.TABLE_NAME, A1.COLUMN_ID
출처:.. 선배님의 인터넷 검색!!x