sql >> Base de Datos >  >> RDS >> Sqlserver

Devolver los parámetros de un procedimiento almacenado o una función definida por el usuario en SQL Server (ejemplos de T-SQL)

En SQL Server, puede usar los PARAMETERS de Transact-SQL vista de esquema de información del sistema para encontrar los parámetros utilizados en un procedimiento almacenado o una función definida por el usuario.

Más específicamente, devuelve una fila para cada parámetro de una función definida por el usuario o procedimiento almacenado al que puede acceder el usuario actual en la base de datos actual.

Para utilizar esta vista, especifique el nombre completo de INFORMATION_SCHEMA.PARAMETERS .

Ejemplo 1:uso básico

Este es un ejemplo de devolución de información sobre los parámetros utilizados en todos los procedimientos almacenados y funciones definidas por el usuario en la base de datos actual a la que tiene acceso el usuario actual.

SELECT 
  SPECIFIC_CATALOG AS [Database],
  SPECIFIC_SCHEMA AS [Schema],
  SPECIFIC_NAME AS [Table],
  PARAMETER_MODE AS [Mode],
  IS_RESULT,
  PARAMETER_NAME,
  DATA_TYPE
FROM INFORMATION_SCHEMA.PARAMETERS;

Resultado:

+------------+----------+----------------------+--------+-------------+------------------+-------------+
| Database   | Schema   | Table                | Mode   | IS_RESULT   | PARAMETER_NAME   | DATA_TYPE   |
|------------+----------+----------------------+--------+-------------+------------------+-------------|
| Music      | dbo      | ISOweek              | OUT    | YES         |                  | int         |
| Music      | dbo      | ISOweek              | IN     | NO          | @DATE            | datetime    |
| Music      | dbo      | ufn_AlbumsByGenre    | IN     | NO          | @GenreId         | int         |
| Music      | dbo      | spAlbumsFromArtist   | IN     | NO          | @ArtistName      | varchar     |
| Music      | dbo      | uspGetAlbumsByArtist | IN     | NO          | @ArtistId        | int         |
+------------+----------+----------------------+--------+-------------+------------------+-------------+

En este ejemplo, elegí devolver solo siete columnas de la vista. El siguiente ejemplo muestra todas las columnas.

Ejemplo 2:devolver todas las columnas

En este ejemplo, incluyo todas las columnas que devuelve la vista. También uso la salida vertical para que no te veas obligado a desplazarte horizontalmente. Además, en aras de la brevedad, uso un WHERE para devolver información sobre una sola función definida por el usuario que usa un parámetro (por lo tanto, solo se devuelve una fila).

SELECT * 
FROM INFORMATION_SCHEMA.PARAMETERS
WHERE SPECIFIC_NAME = 'ufn_AlbumsByGenre';

Resultado (usando salida vertical):

SPECIFIC_CATALOG          | Music
SPECIFIC_SCHEMA           | dbo
SPECIFIC_NAME             | ufn_AlbumsByGenre
ORDINAL_POSITION          | 1
PARAMETER_MODE            | IN
IS_RESULT                 | NO
AS_LOCATOR                | NO
PARAMETER_NAME            | @GenreId
DATA_TYPE                 | int
CHARACTER_MAXIMUM_LENGTH  | NULL
CHARACTER_OCTET_LENGTH    | NULL
COLLATION_CATALOG         | NULL
COLLATION_SCHEMA          | NULL
COLLATION_NAME            | NULL
CHARACTER_SET_CATALOG     | NULL
CHARACTER_SET_SCHEMA      | NULL
CHARACTER_SET_NAME        | NULL
NUMERIC_PRECISION         | 10
NUMERIC_PRECISION_RADIX   | 10
NUMERIC_SCALE             | 0
DATETIME_PRECISION        | NULL
INTERVAL_TYPE             | NULL
INTERVAL_PRECISION        | NULL
USER_DEFINED_TYPE_CATALOG | NULL
USER_DEFINED_TYPE_SCHEMA  | NULL
USER_DEFINED_TYPE_NAME    | NULL
SCOPE_CATALOG             | NULL
SCOPE_SCHEMA              | NULL
SCOPE_NAME                | NULL

Consulte la documentación de Microsoft para obtener información sobre cada columna devuelta por esta vista.