获取ORACLE和SQL SERVER表或视图结构(字段名、字段长度、精确位数、是否可空、字段描述、字段默认值、主键字段)

 获取ORACLE 和 SQL SERVER表或视图结构(字段名、字段长度、精确位数、是否可空、字段描述、字段默认值、主键字段)

-- ORACLE获取表结构
SELECT UTCS.COLUMN_NAME AS COLNAME,
       CASE
         WHEN CHAR_LENGTH > 0 THEN
          UTCS.DATA_TYPE || '(' || UTCS.CHAR_LENGTH || ')'
         ELSE
          UTCS.DATA_TYPE
       END AS COLTYPENAME,
       NVL(UTCS.DATA_PRECISION, '0') AS COLPRECISION,
       NVL(UTCS.DATA_SCALE, '0') AS COLSCALE,
       CASE (UTCS.NULLABLE)
         WHEN 'N' THEN
          '0'
         ELSE
          '1'
       END AS ISNULLABLE,
       UTCS.DATA_DEFAULT AS COLDEFAULT,
       UCCS.COMMENTS AS COLDESC,
       CASE
         WHEN COLS.COLUMN_NAME IS NOT NULL THEN
          '1'
         ELSE
          '0'
       END AS KEYCOL
  FROM USER_TAB_COLUMNS UTCS
  LEFT JOIN USER_COL_COMMENTS UCCS
    ON UTCS.TABLE_NAME = UCCS.TABLE_NAME
   AND UTCS.COLUMN_NAME = UCCS.COLUMN_NAME
  LEFT JOIN USER_CONSTRAINTS UCS
    ON UCS.TABLE_NAME = UTCS.TABLE_NAME
   AND UCS.CONSTRAINT_TYPE = 'P'
  LEFT JOIN USER_CONS_COLUMNS COLS
    ON COLS.TABLE_NAME = UTCS.TABLE_NAME
   AND COLS.COLUMN_NAME = UTCS.COLUMN_NAME
   AND UCS.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME
 WHERE UTCS.TABLE_NAME = '{tableName.ToUpper()}'





-- SQL SERVER获取表结构
SELECT SYSCOLUMNS.NAME                                                    COLNAME,
       SYSTYPES.NAME                                                      COLTYPENAME,
       COLUMNPROPERTY(SYSCOLUMNS.ID, SYSCOLUMNS.NAME, 'PRECISION')        COLPRECISION,
       ISNULL(COLUMNPROPERTY(SYSCOLUMNS.ID, SYSCOLUMNS.NAME, 'SCALE'), 0) COLSCALE,
       SYSCOLUMNS.ISNULLABLE                                              ISNULLABLE,
       CASE
         WHEN SYSCOMMENTS.TEXT IS NULL THEN ''
         ELSE SUBSTRING(SYSCOMMENTS.TEXT, 2, LEN(SYSCOMMENTS.TEXT) - 2)
       END                                                                COLDEFAULT,
       ISNULL(SYS.EXTENDED_PROPERTIES.[VALUE], '')                        COLDESC,
       CASE
         WHEN EXISTS (SELECT 1
                      FROM   SYSOBJECTS
                      WHERE  XTYPE = 'PK'
                             AND PARENT_OBJ = SYSCOLUMNS.ID
                             AND NAME IN (SELECT NAME
                                          FROM   SYSINDEXES
                                          WHERE  INDID IN (SELECT INDID
                                                           FROM   SYSINDEXKEYS
                                                           WHERE  ID = SYSCOLUMNS.ID
                                                                  AND COLID = SYSCOLUMNS.COLID))) THEN '1'
         ELSE '0'
       END                                                                KEYCOL
FROM   SYSCOLUMNS
       LEFT JOIN SYSTYPES
              ON SYSCOLUMNS.XUSERTYPE = SYSTYPES.XUSERTYPE
       LEFT JOIN SYSOBJECTS
              ON SYSCOLUMNS.ID = SYSOBJECTS.ID
                 AND ( SYSOBJECTS.XTYPE = 'U'
                        OR SYSOBJECTS.XTYPE = 'V' )
       LEFT JOIN SYSCOMMENTS
              ON SYSCOMMENTS.ID = SYSCOLUMNS.CDEFAULT
       LEFT JOIN SYS.EXTENDED_PROPERTIES
              ON SYSCOLUMNS.ID = SYS.EXTENDED_PROPERTIES.MAJOR_ID
                 AND SYSCOLUMNS.COLID = SYS.EXTENDED_PROPERTIES.MINOR_ID
WHERE  SYSOBJECTS.NAME = '{tableName}'

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值