Ver funciones definidas por el usuario

Hay varios procedimientos almacenados del sistema y vistas de catálogo que brindan información acerca de los procedimientos almacenados. Con ellos, puede:

  • Ver la definición de la función. Es decir, las instrucciones de Transact-SQL que se utilizan para crear una función definida por el usuario. Esto puede resultarle útil si no tiene los archivos de script de Transact-SQL que se utilizan para crear la función.

  • Obtener información acerca de una función como, por ejemplo, el esquema, la fecha de creación y sus parámetros.

  • Enumerar los objetos utilizados por la función especificada, así como los objetos que utilizan la función especificada. Esta información puede utilizarse para identificar las funciones que se ven afectadas cuando se cambia o se quita un objeto de la base de datos.

Para ver la definición de una función definida por el usuario

Para ver información acerca de una función definida por el usuario

Para ver las dependencias de una función definida por el usuario

Ejemplos

A. Usar vistas de catálogo del sistema para devolver información acerca de una función definida por el usuario

En los siguientes ejemplos se utilizan las vistas de catálogo sys.objects y sys.parameters para devolver información sobre las funciones definidas por el usuario y sus parámetros.

-- 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

B. Usar OBJECT_DEFINITION

En el siguiente ejemplo se utiliza la función del sistema OBJECT_DEFINITION para devolver la definición de la función definida por el usuario dbo.ufnGetContactInformation.

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

C. Usar sys.sql_expression_dependencies

En el siguiente ejemplo se utilizan las vistas de catálogo sys.sql_expression_dependencies y sys.columns para devolver los nombres de tabla y columna de los que depende la función dbo.ufnGetContactInformation definida por el usuario.

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');