Поделиться через


Просмотр определяемых пользователем функций

Несколько системных хранимых процедур и представлений каталога предоставляют сведения о хранимых процедурах. С помощью этих сведений можно производить действия, перечисленные ниже.

  • Просмотреть определение функции, то есть инструкции Transact-SQL, которые были использованы для создания определяемой пользователем функции. Это может пригодиться, если отсутствуют файлы сценария на языке Transact-SQL, с помощью которого была создана функция.

  • Получить сведения о функции, например ее схему, время создания, параметры.

  • Просмотреть объекты, используемые указанной функцией, а также объекты, использующие указанную функцию. Эти сведения могут пригодиться для выявления функций, на которые повлияет изменение или удаление объекта базы данных.

Просмотр определения функции, определяемой пользователем

Просмотр сведений об определяемой пользователем функции

Просмотр зависимостей определяемой пользователем функции

Примеры

А. Использование системных представлений каталога для получения сведений об определяемой пользователем функции

В следующем примере для получения сведений об определяемых пользователем функциях и их параметрах используются представления каталога sys.objects и sys.parameters.

-- Display metadata about the user-defined functions in AdventureWorks.
USE AdventureWorks;
GO
SELECT *
FROM sys.objects
WHERE type IN ('IF','TF','FN','FS','FT');
GO
-- Return parameters associated with the functions
SELECT o.name AS FunctionName, p.*
FROM sys.objects AS o
JOIN sys.parameters AS p ON o.object_id = p.object_ID
WHERE type IN ('IF','TF','FN','FS','FT');
GO

Б. Использование функции OBJECT_DEFINITION

В следующем примере показано использование системной функции OBJECT_DEFINITION для получения определения пользовательской функции dbo.ufnGetContactInformation.

USE AdventureWorks;
GO
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.ufnGetContactInformation'));
GO

В. Использование каталога sys.sql_expression_dependencies

В следующем примере используются представления каталога sys.sql_expression_dependencies и sys.columns для определения названий таблицы и столбца, от которых зависит пользовательская функция dbo.ufnGetContactInformation.

USE AdventureWorks;
GO
SELECT OBJECT_NAME(d.referencing_id) AS referencing_entity, 
    OBJECT_NAME(referenced_id) AS referenced_entity, 
    referenced_minor_id AS referenced_column_id,
    c.name AS referenced_column 
FROM sys.sql_expression_dependencies AS d
JOIN sys.columns AS c ON c.object_id = d.referenced_id
    AND c.column_id = d.referenced_minor_id
WHERE d.referencing_id = OBJECT_ID(N'AdventureWorks.dbo.ufnGetContactInformation');