• 给SQL补充一个查看表结构的存储过程


    数据库中表太多,要查看某个表的结构比较费劲,用此存储过程比较方便;

     
    CRM
    /********************************************
    * 根据表名得到表信息,包括字段说明     
    *******************************************
    */   
    CREATE PROC [dbo].[sp_help_table]
    (@tableName VARCHAR(200), @ColumnLike VARCHAR(200= NULL)         
    AS   
    --如果表名不存在,就直接选出相似表 
    IF NOT EXISTS(
           SELECT 1
           FROM   sysobjects
           WHERE  id = OBJECT_ID(@tableName)
                  AND TYPE = 'U'
       )
    BEGIN
        SELECT NAME FROM   sysobjects
        WHERE  NAME LIKE '%' + @tableName + '%' AND TYPE = 'U'   
        RETURN
    END 
     
     
    --筛选相似列名
    IF (@ColumnLike IS NULL)
        SET @ColumnLike = ''
       
    DECLARE @ColumnTable TABLE(cName VARCHAR(200))   
    INSERT @ColumnTable
      (
        cName
      )
    SELECT a.name
    FROM   syscolumns a,sysobjects d
    WHERE  a.id = d.id
           AND d.name = @tableName
           AND a.name LIKE '%' + @ColumnLike + '%'   
         
    --查询表结构信息            
    SELECT 表名 = CASE
                       WHEN a.colorder = 1 THEN d.name
                       ELSE ''
                  END,
           表说明 = CASE
                         WHEN a.colorder = 1 THEN ISNULL(f.value, '')
                         ELSE ''
                    END,
           字段序号 = a.colorder,
           字段名 = a.name,
           字段说明 = ISNULL(g.[value]''),
           标识 = CASE
                       WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity'= 1 THEN ''
                       ELSE ''
                  END,
           主键 = CASE
                       WHEN EXISTS(
                                SELECT 1 FROM   sysobjects WHERE  xtype = 'PK' AND parent_obj = a.id
                                       AND NAME   IN (SELECT NAME FROM   sysindexes
                                                      WHERE  indid   IN (SELECT indid FROM sysindexkeys
                                                                         WHERE  id = a.id AND  colid = a.colid))
                            ) THEN ''
                       ELSE ''
                  END,
           类型 = b.name,
           占用字节数 = a.length,
           长度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),
           小数位数 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0),
           允许空 = CASE WHEN a.isnullable = 1 THEN ''
                         ELSE ''
                    END,
           默认值 = ISNULL(e.text'')
    FROM   syscolumns a
           LEFT   JOIN systypes b
                ON  a.xusertype = b.xusertype
           INNER   JOIN sysobjects d
                ON  a.id = d.id
                AND d.xtype = 'U'
                AND d.name <> 'dtproperties'
           LEFT   JOIN syscomments e
                ON  a.cdefault = e.id
           LEFT   JOIN sys.extended_properties g
                ON  a.id = g.major_id
                AND a.colid = g.minor_id
           LEFT   JOIN sys.extended_properties f
                ON  d.id = f.major_id
                AND f.minor_id = 0
                    --where   d.name='要查询的表'         --如果只查询指定表,加上此条件
    WHERE  d.name = @tableName
           AND EXISTS(
                   SELECT 1
                   FROM   @ColumnTable
                   WHERE  cname = a.name
               )
    ORDER BY a.id,a.colorder
  • 相关阅读:
    Nio笔记(一)
    设计模式之职责链模式
    Hibernate注解(三)
    Hibernate注解(二)
    Hibernate注解(一)
    设计模式之适配器模式
    设计模式之桥接模式
    设计模式之外观模式
    设计模式之观享元模式
    设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/51net/p/2444219.html
Copyright © 2020-2023  润新知