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

简介: 数据库中表太多,要查看某个表的结构比较费劲,用此存储过程比较方便; CRM/********************************************* 根据表名得到表信息,包括字段说明     ********************************************/   CREATE PROC [dbo].
数据库中表太多,要查看某个表的结构比较费劲,用此存储过程比较方便;

 
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
目录
相关文章
|
2月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
2月前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
|
2月前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
89 1
|
2月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
|
2月前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
56 3
|
2月前
|
存储 SQL 安全
|
2月前
|
存储 SQL 数据库
使用SQL创建视图和存储过程
使用SQL创建视图和存储过程
19 0
|
4月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
43 1
|
4月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
125 0
|
4月前
|
存储 SQL 数据库
如何使用 SQL Server 创建存储过程?
【8月更文挑战第31天】
210 0