In SQL Server, de sp_sproc_columns
Op het systeem opgeslagen procedure stelt u in staat kolominformatie op te halen voor een bepaalde opgeslagen procedure of door de gebruiker gedefinieerde functie in het huidige systeem.
Het is gelijk aan SQLProcedureColumns in ODBC.
Syntaxis
De syntaxis gaat als volgt:
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
Alle argumenten zijn optioneel. Zie de Microsoft-documentatie voor een gedetailleerde uitleg hiervan.
Voorbeeld 1 – Specificeer geen argumenten
U kunt de opgeslagen procedure uitvoeren zonder argumenten op te geven. Zoals dit:
EXEC sp_sproc_columns
Of zelfs zo:
sp_sproc_columns
Hiermee worden alle opgeslagen procedures en door de gebruiker gedefinieerde functies in de huidige database geretourneerd. Wanneer ik dat tegen de WideWorldImporters-voorbeelddatabase uitvoer, krijg ik 9077 rijen. In het volgende voorbeeld zal ik het beperken tot slechts één.
Voorbeeld 2 – Specificeer alle argumenten
Zo ziet het eruit als je alle argumenten opneemt.
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
Resultaat (met verticale uitvoer):
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
In dit geval retourneer ik informatie over de retourwaarde van de GetCityUpdates opgeslagen procedure.
Voorbeeld 3 – Specificeer alleen de opgeslagen procedure (of functie)
In plaats van alle argumenten op te nemen, kunt u alleen de naam van de opgeslagen procedure opnemen. Als u de @column_name
. echter niet opgeeft, , als u dit doet, wordt voor elke kolom een rij geretourneerd.
U kunt uw code ook beknopter maken door de argumentnaam weg te laten (d.w.z. alleen de waarde ervan op te nemen).
EXEC sp_sproc_columns GetCityUpdates;
Resultaat (met verticale uitvoer):
-[ 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
Voorbeeld 4 – Andere variaties
U kunt elke variatie van argumenten opgeven om precies de informatie terug te geven die u nodig hebt.
U kunt bijvoorbeeld alle informatie van een bepaalde procedure-eigenaar retourneren:
EXEC sp_sproc_columns @procedure_owner = 'Integration'
Of u kunt informatie krijgen over alle retourwaarden van alle procedures en door de gebruiker gedefinieerde functies:
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
Natuurlijk kunt u desgewenst altijd de procedurekwalificatie opnemen. In SQL Server vertegenwoordigt deze parameter de databasenaam. In sommige producten vertegenwoordigt het de servernaam van de databaseomgeving van de tabel.
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
Voorbeeld 5 – Jokertekens
De @fUsePattern
argument stelt u in staat om al dan niet onderstrepingstekens (_
), procent (%
), en haakje ([
]
) tekens worden geïnterpreteerd als jokertekens.
Als u bijvoorbeeld de volgende code uitvoert, worden alle procedures en door de gebruiker gedefinieerde functies geretourneerd die beginnen met Get .
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
Dus in mijn geval leverde dit procedures op zoals GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, enz.
Als ik jokertekens uitschakel:
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
Ik krijg geen resultaten.