转载 解决SQL Server里sp_helptext输出格式错行问题

转载自 http://topic.csdn.net/u/20080804/12/F477B3D8-0017-4EF9-B516-021032BE83CE.html

 

在开发环境中常遇到更改存储过程、函数、视图等对象,解决SQL Server2005里sp_helptext输出格式错行问题。

 

use  Master  
go   
if   object_id ( ' SP_SQL ' is   not   null   
  
drop   proc  SP_SQL  
go   
ExpandedBlockStart.gifContractedBlock.gif
/**/ /******************************************************************************************************************************************************  

整理人:中国风(Roy)  

日期:2008.01.01  
*****************************************************************************************************************************************************
*/
  
create   proc   [ dbo ] . [ SP_SQL ] ( @ObjectName  sysname)  
as   
set  nocount  on  ;  
declare   @Print   varchar ( max )  
if   exists ( select   1   from  syscomments   where  ID = object_id ( @ObjectName and  encrypted = 1 )  
  
begin   
       
Print  N ' 對象已加密! '   
       
return   
  
end   

if   coalesce ( object_id ( @ObjectName ,N ' P ' ), object_id ( @ObjectName ,N ' FN ' ), object_id ( @ObjectName ,N ' IF ' ), object_id ( @ObjectName ,N ' TF ' ), object_id ( @ObjectName ,N ' TR ' ), object_id ( @ObjectName ,N ' V ' ))  is    null   
  
begin   
      
Print  N ' 對象只針對函數、存儲過程、觸發器、視圖! '   
      
return    
  
end   
print   ' Use  ' + db_Name ()  
print   ' Go '   
print   ' if object_ID( ' + quotename ( case   when   charindex ( ' ] ' , @ObjectName ) = 0   then   ' [ ' + replace ( rtrim ( @ObjectName ), ' . ' , ' ].[ ' ) + ' ] '   else   @ObjectName   end  , '''' ) + ' ) is not null '   
print   char ( 9 ) + ' Drop  ' + case    when   object_id ( @ObjectName ,N ' P ' is   not   null   then   ' Procedure  '   when   Coalesce ( object_id ( @ObjectName ,N ' FN ' ), object_id ( @ObjectName ,N ' IF ' ), object_id ( @ObjectName ,N ' TF ' ))  is   not   null   then   ' Function  '   when   object_id ( @ObjectName ,N ' TR ' is   not   null   then   ' Trigger  '   else   ' View  ' end   + case   when   charindex ( ' ] ' , @ObjectName ) = 0   then   ' [ ' + replace ( rtrim ( @ObjectName ), ' . ' , ' ].[ ' ) + ' ] '   else   @ObjectName   end   
Print   ' Go '   

declare   @T   table (Col  nvarchar ( max ))  
insert   @T   select  object_definition( object_id ( @ObjectName ))  -- +char(13)+char(10)  
while  ( select   max (Col)  from   @T ) > ''   
  
begin   
      
select   top   1   @Print =left (Col, charindex ( char ( 13 ) + char ( 10 ),Col) - 1 from   @T   
      
print   @Print   
      
update   @T   set  Col = stuff (Col, 1 , charindex ( char ( 13 ) + char ( 10 ),Col) + 1 , '' )  
  
end   
print   ' Go '   


go   


調用方法:  
use  test -- 指定所屬數據庫  
exec  sp_sql  ' sp_sql ' -- 指定對象 


 

转载于:https://www.cnblogs.com/aspsmile/articles/1273631.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值