Подтвердить что ты не робот

Как просмотреть сохраненную функцию - SQL Server

Версия: SQLServer 8

Я хотел бы просмотреть содержимое хранимой функции в sqlserver, то есть что именно выполняет функция.

Ни одна из перечисленных ниже опций here не работает. Кажется, нет никакой базы данных/таблицы, называемой sys.objects. Я смог запросить таблицу information_table.routines, но это не содержит функцию, которую я ищу. Моя функция находится в:

DBName.dbo.functionName

Как я могу просмотреть содержимое этой функции?

4b9b3361

Ответ 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 в новое окно, чтобы увидеть полный контент.