Rac*_*hel 5 sql-server-2005 sql-server stored-procedures information-schema
当我想查找特定值时,我使用以下脚本来搜索所有存储过程的文本。
SELECT ROUTINE_NAME, ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE @searchText
ORDER BY ROUTINE_NAME
Run Code Online (Sandbox Code Playgroud)
我最近发现ROUTINE_DEFINITION
在 4000 个字符后停止,所以一些程序没有在应该返回的时候返回。
如何查询存储过程的全文以获取值?
使用其中之一
从不使用
从 BOL 开始INFORMATION_SCHEMA.ROUTINES
:
列名:ROUTINE_DEFINITION
数据类型: nvarchar(4000)
说明: 如果函数或存储过程未加密,则返回函数或存储过程定义文本的前 4000 个字符。否则,返回 NULL。为确保您获得完整的定义,请在sys.sql_modules目录视图中查询OBJECT_DEFINITION函数或定义列。
因此,您可以通过如下更改脚本来查看其余部分:
SELECT
ROUTINE_NAME,
ROUTINE_TYPE,
ROUTINE_DEFINITION as First4000,
OBJECT_DEFINITION(object_id(ROUTINE_NAME)) as FullDefinition
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
OBJECT_DEFINITION(object_id(ROUTINE_NAME)) LIKE @searchText
ORDER BY
ROUTINE_NAME
Run Code Online (Sandbox Code Playgroud)
上面别名为 as 的列FullDefinition
会将其余内容返回为nvarchar(max)
。
归档时间: |
|
查看次数: |
13690 次 |
最近记录: |