Dans SQL Server, les sp_sproc_columns
procédure stockée système vous permet d'obtenir des informations de colonne pour une procédure stockée donnée ou une fonction définie par l'utilisateur dans le système actuel.
C'est l'équivalent de SQLProcedureColumns dans ODBC.
Syntaxe
La syntaxe ressemble à ceci :
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
Tous les arguments sont facultatifs. Consultez la documentation de Microsoft pour une explication détaillée de ceux-ci.
Exemple 1 – Ne spécifiez aucun argument
Vous pouvez exécuter la procédure stockée sans fournir d'arguments. Comme ceci :
EXEC sp_sproc_columns
Ou même comme ça :
sp_sproc_columns
Cela renvoie toutes les procédures stockées et les fonctions définies par l'utilisateur dans la base de données actuelle. Lorsque je l'exécute sur l'exemple de base de données WideWorldImporters, j'obtiens 9077 lignes. Dans l'exemple suivant, je vais le réduire à un seul.
Exemple 2 - Spécifier tous les arguments
Voici à quoi cela ressemble si vous incluez tous les arguments.
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
Résultat (en utilisant la sortie verticale) :
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
Dans ce cas, je renvoie des informations sur la valeur de retour de GetCityUpdates procédure stockée.
Exemple 3 - Spécifiez uniquement la procédure stockée (ou la fonction)
Plutôt que d'inclure tous les arguments, vous pouvez inclure uniquement le nom de la procédure stockée. Cependant, si vous ne spécifiez pas le @column_name
, cela renverra une ligne pour chaque colonne.
De plus, vous pouvez rendre votre code plus concis en omettant le nom de l'argument (c'est-à-dire en n'incluant que sa valeur).
EXEC sp_sproc_columns GetCityUpdates;
Résultat (en utilisant la sortie verticale) :
-[ 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
Exemple 4 - Autres variantes
Vous pouvez fournir n'importe quelle variante d'arguments pour renvoyer uniquement les informations dont vous avez besoin.
Par exemple, vous pouvez renvoyer toutes les informations d'un propriétaire de procédure particulier :
EXEC sp_sproc_columns @procedure_owner = 'Integration'
Ou vous pouvez obtenir des informations sur toutes les valeurs de retour de toutes les procédures et fonctions définies par l'utilisateur :
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
Bien sûr, vous pouvez toujours inclure le qualificatif de procédure si vous le souhaitez. Dans SQL Server, ce paramètre représente le nom de la base de données. Dans certains produits, il représente le nom du serveur de l'environnement de base de données de la table.
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
Exemple 5 – Caractères génériques
Le @fUsePattern
L'argument vous permet de spécifier si le trait de soulignement (_
), pourcentage (%
) et parenthèse ([
]
) sont interprétés comme des caractères génériques.
Par exemple, l'exécution du code suivant renverra toutes les procédures et fonctions définies par l'utilisateur qui commencent par Get .
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
Donc, dans mon cas, cela a renvoyé des procédures telles que GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, etc.
Si je désactive les caractères génériques :
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
Je n'obtiens aucun résultat.