SQL Server存储过程sp_helptext的不足以及解决方案

来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:15 点击:

介绍sp_helptext 前 先介绍下系统表sys.syscomments   以及  系统视图   sys.sql_modules。
 
sys.syscomments:包含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项。text 列包含原始的 SQL 定义语句。(简单点说,这个系统表存储了我们创建的存储过程、视图等的源码,通过查询该系统表可以查看创建的存储过程等源码。SQL Server2000引入)
  www.2cto.com  
sys.sql_modules:对每个 SQL 语言定义的模块对象都返回一行。类型为 P、RF、V、TR、FN、IF、TF 和 R 的对象均有关联的 SQL 模块。在此视图中,独立的默认值,即 D 类型的对象也具有 SQL 模块定义。(SQL Server 2005引入)
 
 以上两句话来自于SQL Server的本地帮助文档中。在查看sys.syscomments的说明时,有一个重要的提示:

 
点击 SQL Server 2000系统表映射到 SQL Server 2005 系统视图,找到:
 

 
意思是说,建议改用视图sys.sql_modules来代替sys.syscomments系统表。
 
 
sp_helptext 是MS SQL Server的一个系统存储过程,可以通过它来查看存储过程或者视图源码(最好的方式是通过设置快捷键绑定存储过程,这样效率比较高),  www.2cto.com  
 
但是这个存储过程又几个不好的地方:
 
1、它会帮你格式化代码  
 
2、当一行长度超过一定后,它给你分行显示(当一行代码过长时,这个烦人的问题就来了)
 
这样代码就显得比较难看了。。相信用过sp_helptext存储过程的都知道这个问题。
 
当然可以通过右键存储过程名称 然后点击修改 ,也能显示源码。并且代码格式完好无损。但是无法绑定快捷键。效率低。
 
解决方案:

就是借助sys.syscomments或者sys.sql_modules 自己写一个存储过程 来显示源码,使其格式不乱。并且可以绑定快捷键。
鉴于微软的重要提示,所以在这里,使用sys.sql_modules:
 
[sql]
--Siuon  
--查看存储过程源码  
create procedure mp_helptext(  
    @name varchar(255)  
)  
as  
declare @object_id int,  
                @sourcecode varchar(max),  
                @line varchar(max),  
                @end int,   www.2cto.com   
                @rn varchar(2),  
                @tab varchar(1)  
                  
declare @source table(  
    source varchar(max)  
)  
  
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • sql server 列转行
  • SQL小技巧系列 --- 行转列合并
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1