2

すべてのストアド プロシージャで特定の単語の出現回数をカウントする必要があります。

つまり、特定のデータベース内のすべてのストアド プロシージャで「場所」という単語が何回出現しますか?

カーソルを使用してこれを実行しようとしましたが、どこにも行きません!

4

1 に答える 1

5

object_definition関数を使用して、このようにsys.procedures表示します。

declare @word varchar(128)
set @word = 'place'

select name, (len(object_definition(object_id)) -  len(replace(object_definition(object_id), @word, ''))) / len (@word) as qty
from sys.procedures
where object_definition(object_id) like '%'+@word+'%' and type = 'P'
order by name

コメントの後に追加された、すべてのストアド プロシージャ内の特定の単語のすべての出現:

declare @word varchar(128)
set @word = 'place'

select sum((len(object_definition(object_id)) -  len(replace(object_definition(object_id), @word, ''))) / len (@word)) as qty
from sys.procedures
where object_definition(object_id) like '%'+@word+'%'

これが機能している(そしてコメント後に更新された)例です:http://sqlfiddle.com/#!3/a759c/7

于 2012-05-25T06:24:51.710 に答える