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


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

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

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

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

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

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

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

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

Примеры

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

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

-- Display metadata about the user-defined functions in AdventureWorks2008R2.
USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
GO
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.ufnGetContactInformation'));
GO

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

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

USE AdventureWorks2008R2;
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'AdventureWorks2008R2.dbo.ufnGetContactInformation');