改进版的sp_helptext

  SQL Server中系统自带的sp_helptext存在一些问题, 如显示格式不易阅读,空格未自动过滤等,

现开发改进型sp_helptext2, 可直接显示为text格式,且能自动找出同义词的源对象.

if exists(select 1 from sys.objects where type='P' and name='sp_helptext2')
   drop proc dbo.sp_helptext2
go 

create proc dbo.sp_helptext2
(@objectname sysname)
as
begin
set nocount on
declare @objectid int,
              @objecttype varchar(10),
              @Print nvarchar(max)

select @objectid=object_id,
           @objecttype=type
 from sys.objects 
 where type in('P','V','TR','FN','SN')
 and name=@objectname

if @objectid is null
begin
  print 'Invalid object name '''+@objectname+'''. '
  return
end

if @objecttype='SN'
begin
  select @Print='Synonym: '+@objectname+char(13)+char(10)
                          +'BaseObject: '+base_object_name 
    from sys.synonyms 
    where name=@objectname
  print @Print
  return
end

declare @T table(Col nvarchar(max))

insert @T(Col)
  select object_definition(@objectid)+char(13)+char(10)

while(select Col from @T)<>''
begin  
   select @Print=replace(left(Col,charindex(char(13)+char(10),Col)-1),char(32),' ')
     from @T

   print rtrim(@Print)

   update @T set Col=stuff(Col,1,charindex(char(13)+char(10),Col)+1,'')  
end

end


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值