Как просмотреть сохраненную функцию - SQL Server
Версия: SQLServer 8
Я хотел бы просмотреть содержимое хранимой функции в sqlserver, то есть что именно выполняет функция.
Ни одна из перечисленных ниже опций here не работает. Кажется, нет никакой базы данных/таблицы, называемой sys.objects. Я смог запросить таблицу information_table.routines, но это не содержит функцию, которую я ищу. Моя функция находится в:
DBName.dbo.functionName
Как я могу просмотреть содержимое этой функции?
Ответы
Ответ 1
Вы можете использовать команду sp_helptext для просмотра определения. Он просто делает
Отображает определение пользовательского правила, стандартную, незашифрованную хранимую процедуру Transact-SQL, определенную пользователем функцию Transact-SQL, триггер, вычисленный столбец, ограничение CHECK, представление или системный объект, например системную хранимую процедуру.
например,
EXEC sp_helptext 'StoredProcedureName'
EDIT:
Если ваши databases
или server
отличаются друг от друга, вы можете сделать это, указав их также
EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'
Ответ 2
select definition
from sys.sql_modules
where object_name(object_id) like 'functionName'
Ответ 3
--ShowStoredProcedures
select p.[type]
,p.[name]
,c.[definition]
from sys.objects p
join sys.sql_modules c
on p.object_id = c.object_id
where p.[type] = 'P'
--and c.[definition] like '%foo%'
ORDER BY p.[name]
___________
SELECT OBJECT_NAME(object_id) ProcedureName,
definition
FROM sys.sql_modules
WHERE objectproperty(object_id,'IsProcedure') = 1
ORDER BY OBJECT_NAME(object_id)
Ответ 4
Да, он работает нормально.
Чтобы просмотреть хранимые процедуры...
SELECT * FROM sys.procedures;
и получить имя procduere и использовать приведенный ниже запрос для того же самого (я использую SQuirreL SQL Client Version 3.2.0-RC1).
EXEC sp_helptext 'StoredProcedureName'.
Ответ 5
Я скорее использую INFORMATION_SCHEMA.ROUTINES:
select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'
Просто скопируйте столбец ROUTINE_DEFINITION в новое окно, чтобы увидеть полный контент.