En SQL Server, las sp_sproc_columns
El procedimiento almacenado del sistema le permite obtener información de columna para un procedimiento almacenado determinado o una función definida por el usuario en el sistema actual.
Es equivalente a SQLProcedureColumns en ODBC.
Sintaxis
La sintaxis es así:
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
Todos los argumentos son opcionales. Consulte la documentación de Microsoft para obtener una explicación detallada de estos.
Ejemplo 1:no especificar argumentos
Puede ejecutar el procedimiento almacenado sin proporcionar ningún argumento. Así:
EXEC sp_sproc_columns
O incluso así:
sp_sproc_columns
Esto devuelve todos los procedimientos almacenados y funciones definidas por el usuario en la base de datos actual. Cuando ejecuto eso contra la base de datos de ejemplo de WideWorldImporters, obtengo 9077 filas. En el siguiente ejemplo lo reduciré a uno solo.
Ejemplo 2:especificar todos los argumentos
Esto es lo que parece si incluye todos los argumentos.
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
Resultado (usando salida vertical):
PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @RETURN_VALUE COLUMN_TYPE | 5 DATA_TYPE | 4 TYPE_NAME | int PRECISION | 10 LENGTH | 4 SCALE | 0 RADIX | 10 NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | 4 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 0 IS_NULLABLE | NO SS_DATA_TYPE | 56
En este caso, devuelvo información sobre el valor de retorno de GetCityUpdates procedimiento almacenado.
Ejemplo 3:especificar solo el procedimiento (o función) almacenado
En lugar de incluir todos los argumentos, puede incluir solo el nombre del procedimiento almacenado. Sin embargo, si no especifica el @column_name
, hacer esto devolverá una fila para cada columna.
Además, puede hacer que su código sea más conciso omitiendo el nombre del argumento (es decir, solo incluyendo su valor).
EXEC sp_sproc_columns GetCityUpdates;
Resultado (usando salida vertical):
-[ RECORD 1 ]------------------------- PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @RETURN_VALUE COLUMN_TYPE | 5 DATA_TYPE | 4 TYPE_NAME | int PRECISION | 10 LENGTH | 4 SCALE | 0 RADIX | 10 NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | 4 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 0 IS_NULLABLE | NO SS_DATA_TYPE | 56 -[ RECORD 2 ]------------------------- PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @LastCutoff COLUMN_TYPE | 1 DATA_TYPE | -9 TYPE_NAME | datetime2 PRECISION | 27 LENGTH | 54 SCALE | 7 RADIX | NULL NULLABLE | 1 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | 3 CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 1 IS_NULLABLE | YES SS_DATA_TYPE | 0 -[ RECORD 3 ]------------------------- PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @NewCutoff COLUMN_TYPE | 1 DATA_TYPE | -9 TYPE_NAME | datetime2 PRECISION | 27 LENGTH | 54 SCALE | 7 RADIX | NULL NULLABLE | 1 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | 3 CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 2 IS_NULLABLE | YES SS_DATA_TYPE | 0
Ejemplo 4:otras variaciones
Puede proporcionar cualquier variación de argumentos para devolver solo la información que necesita.
Por ejemplo, podría devolver toda la información de un propietario de procedimiento en particular:
EXEC sp_sproc_columns @procedure_owner = 'Integration'
O puede obtener información sobre todos los valores de retorno de todos los procedimientos y funciones definidas por el usuario:
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
Por supuesto, siempre puede incluir el calificador de procedimiento si lo desea. En SQL Server, este parámetro representa el nombre de la base de datos. En algunos productos, representa el nombre del servidor del entorno de la base de datos de la tabla.
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
Ejemplo 5:caracteres comodín
El @fUsePattern
El argumento le permite especificar si subrayar o no (_
), porcentaje (%
), y corchete ([
]
) los caracteres se interpretan como caracteres comodín.
Por ejemplo, ejecutar el siguiente código devolverá todos los procedimientos y funciones definidas por el usuario que comienzan con Get .
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
Entonces, en mi caso, esto devolvió procedimientos como GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, etc.
Si desactivo los caracteres comodín:
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
No obtengo resultados.