如何从information_schema.routines或Sys.sql_modules获取全文格式存储过程(完整代码)

时间:2017-05-11 11:38:35

标签: sql sql-server

如何从information_schema.routines或Sys.sql_modules获取全文格式存储过程(完整代码) 使用脚本: -

select top 1 cast(ROUTINE_DEFINITION  as TEXT)
FROM information_schema.routines
where ROUTINE_NAME like '%XXXXXXX%'  

SELECT  *
FROM    Sys.sql_modules 
WHERE   definition LIKE '%XXXXXXXXXXXXXXX%'  

3 个答案:

答案 0 :(得分:0)

在SQL Server中,INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION视图列定义为nvarchar(4000),因此不会返回超过4000个字符。使用sys.sql_module.definition将定义返回为nvarchar(MAX)。不要使用已弃用的text数据类型。

请注意,SSMS可能会根据Query->选项 - >结果设置截断值。

答案 1 :(得分:0)

希望它可以帮助你

SELECT SPECIFIC_NAME
        ,CAST(ROUTINE_DEFINITION AS NVARCHAR(MAX))As ROUTINE_DEFINITION
    FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_TYPE IN (
            'PROCEDURE'
            ,'FUNCTION'
            )
        AND ROUTINE_DEFINITION LIKE '%Your search string%'
    ORDER BY 1

答案 2 :(得分:0)

在这里找到:

Where does SQL Server store the stored procedure code?

此SQL将在不截断结果的情况下起作用:

select object_definition(object_id(routine_name)) from information_schema.routines