首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

搜寻存储过程脚本中的某段字符串

2012-08-26 
搜索存储过程脚本中的某段字符串有时候调试sql, 有一连串的存储过程调用,这时候想知道某个存储过程被其它

搜索存储过程脚本中的某段字符串

有时候调试sql, 有一连串的存储过程调用,这时候想知道某个存储过程被其它哪几个存储过程调用时,或者想知道某个表在哪些存储过程里被使用过; ? 这时候我们就需要一个工具,来检索存储过程的sql脚本;
编写存储代码 如下:

Declare @proc_name varchar(100)Declare @fuction_name varchar(100)Declare @seek_text varchar(100)set @fuction_name='tableName' --要查找的字符串set @seek_text=@fuction_nameDeclare @sql varchar(8000)Create table #proc_count(proc_name varchar(100),fuction_name varchar(100),[text] varchar(7000))Create table #proc_text([text] varchar(8000)) Declare Cursor_Function cursorforselect quotename(name) from sys.sysobjects where xtype='P' Open Cursor_FunctionFetch next from Cursor_Function into @proc_name While @@fetch_status=0Begintruncate table #proc_textset @sql=''set @sql=@sql+'insert into #proc_text([text])exec sp_helptext '+''''+@proc_name+''''+' If exists(select 1 from #proc_text where [Text] like '+''''+'%'+@seek_text+'%'+''''+')begininsert into #proc_count(proc_name,fuction_name,[text])select '+''''+@proc_name+''''+','+''''+@fuction_name+''''+','+'[text]from #proc_textwhere [Text] like '+''''+'%'+@seek_text+'%'+''''+'end' print @sqlexec (@sql) Fetch next from Cursor_Function into @proc_nameend close Cursor_Functiondeallocate Cursor_Function select distinct proc_name,fuction_name from #proc_countorder by proc_name drop table #proc_countdrop table #proc_text
?注:以上脚本在sqlserver中实现

热点排行