use linecheckdb
go--檢視儲存過程原始碼(proc/view/function/trigger都可)
alter
procedure mp_helptext
@name varchar(255)
asdeclare @object_id int,
@sourcecode varchar(max),
@line varchar(max),
@end
int,
@rn varchar(2),
@tab varchar(1)
--declare @source table(
-- source varchar(max)
--)set @rn = char(13)+char(10)
set @tab = char(9)
begin
--從sys.sql_modules獲得無換行原始碼
select @sourcecode = definition from sys.sql_modules where object_id=object_id(@name)
--換行
while(charindex(@rn,@sourcecode)!=0)
begin
set @end=charindex(@rn,@sourcecode)
set @line = replace(substring(@sourcecode,1,@end-1),@tab,@tab+@tab)
if(charindex('create',@line)<>0
and (charindex('proc',@line)<>0
or charindex('view',@line)<>0
or charindex('function',@line)<>0
or charindex('trigger',@line)<>0))
begin
set @line = replace(@line,'create','alter')
endif( patindex('[--]%', @line) <= 0
and (
patindex('%@checkitem_serial_number%', @line) > 0
or patindex('%@checkitem_scan%', @line) > 0 ))
set @line = replace(@line, '(30)', '(max)')
--insert
into @source(source) values(@line)
print @line
set @end = @end + 2
set @sourcecode = substring(@sourcecode,@end,len(@sourcecode))
end--insert
into @source(source) values(@sourcecode)
--insert
into @source(source) values('go')
--print @line
print ('go')
--select * from @source
endgo
--判斷該儲存過程是否滿足要求
create
procedure mp_name
@name varchar(255),
@output
intoutput--返回1表示,該儲存過程滿足要求
asdeclare @object_id int,
@sourcecode varchar(max),
@line varchar(max),
@end
int,
@rn varchar(2),
@tab varchar(1)
set @rn = char(13)+char(10)
set @tab = char(9)
begin
select @sourcecode = definition from sys.sql_modules where object_id=object_id(@name)
while(charindex(@rn,@sourcecode)!=0)
begin
set @end=charindex(@rn,@sourcecode)
set @line = replace(substring(@sourcecode,1,@end-1),@tab,@tab+@tab)
--需要修改的儲存過程,輸出1
if( patindex('[--]%', @line) <= 0
and (
patindex('%@checkitem_serial_number%', @line) > 0
or patindex('%@checkitem_scan%', @line) > 0 ))
begin
set @output = 1
break
end-- or (patindex('[--]%', @line) > 0
and patindex('%[吖-座]%', @line) > 0)
set @end = @end + 2
set @sourcecode = substring(@sourcecode,@end,len(@sourcecode))
endend
go
--修改儲存過程的指定引數型別
declare @count int = 0
declare @output int = 0
declare @name varchar(250)
declare aa cursor for
select name from sys.objects where type = 'p'
and name not
like
'sp_%'
and name <> 'mp_helptext'
and name <> 'mp_name'
order
by name
begin
open aa
fetch
next
from aa into @name
while @@fetch_status = 0
begin
set @output = 0
exec mp_name @name, @output
output
if(@output = 1)
begin
--print @name
exec mp_helptext @name
endfetch
next
from aa into @name
set @count += @output
endprint @count
close aa
deallocate aa
end
儲存過程的引數
儲存過程的引數 儲存過程如何與呼叫者進行互動呢,互動方式之一就是引數。注意 宣告變數的那句話就不需要了!引數 名字 型別 查詢 set uname call test4 2,uname select uname as myunameaa 結果 其實 end前面的select my uname 也是不...
使用IN型別引數執行Oracle儲存過程。
該執行緒包含一些示例 這些示例 顯示了從vb執行oracle儲存過程和函式的方法。希望使用者發現它們有用。僅以in型別作為引數模式的oracle procedure。create or replace procedure deptins dno dept.deptno type,dn dept.dn...
修改儲存過程
修改儲存過程 alter procedure owner procedure name procedure definition procedure definition 請參見create procedure 語句。alter procedure owner procedure name set ...