转载自 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

/**/
/****************************************************************************************************************************************************** 
整理人:中国风(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
'
--
指定對象
本文提供了一种在SQLServer2005中格式化存储过程、函数、视图等对象的方法,解决了sp_helptext输出格式错行的问题。通过创建一个自定义存储过程SP_SQL,可以更清晰地查看和管理数据库对象。
2643

被折叠的 条评论
为什么被折叠?



