当我想查找特定值时,我使用以下脚本来搜索所有存储过程的文本。
SELECT ROUTINE_NAME, ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE @searchText
ORDER BY ROUTINE_NAME
我最近发现它ROUTINE_DEFINITION
在 4000 个字符后停止,所以一些程序在应该返回的时候没有返回。
如何查询存储过程的全文以获取值?
当我想查找特定值时,我使用以下脚本来搜索所有存储过程的文本。
SELECT ROUTINE_NAME, ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE @searchText
ORDER BY ROUTINE_NAME
我最近发现它ROUTINE_DEFINITION
在 4000 个字符后停止,所以一些程序在应该返回的时候没有返回。
如何查询存储过程的全文以获取值?
使用其中之一
从不使用
从 BOL,在
INFORMATION_SCHEMA.ROUTINES
:列名:
ROUTINE_DEFINITION
数据类型:
nvarchar(4000)
说明: 如果函数或存储过程未加密,则返回函数或存储过程定义文本的前 4000 个字符。否则,返回 NULL。为确保您获得完整的定义,请查询OBJECT_DEFINITION函数或sys.sql_modules目录视图中的定义列。
因此,您可以通过如下更改脚本来查看其余部分:
上面别名为 as 的列
FullDefinition
将返回其余内容为nvarchar(max)
.有关详细信息,请参阅我的博客文章: 如何在存储过程、触发器、函数或视图中搜索文本