I SQL Server, sp_sproc_columns
systemlagrad procedur gör att du kan få kolumninformation för en given lagrad procedur eller användardefinierad funktion i det aktuella systemet.
Det motsvarar SQLProcedureColumns i ODBC.
Syntax
Syntaxen ser ut så här:
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
Alla argument är valfria. Se Microsofts dokumentation för en detaljerad förklaring av dessa.
Exempel 1 – Ange inga argument
Du kan köra den lagrade proceduren utan att ange några argument. Så här:
EXEC sp_sproc_columns
Eller till och med så här:
sp_sproc_columns
Detta returnerar alla lagrade procedurer och användardefinierade funktioner i den aktuella databasen. När jag kör det mot WideWorldImporters exempeldatabasen får jag 9077 rader. I nästa exempel kommer jag att begränsa det till bara ett.
Exempel 2 – Ange alla argument
Så här ser det ut om du inkluderar alla argument.
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
Resultat (med vertikal utdata):
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
I det här fallet returnerar jag information om returvärdet för GetCityUpdates lagrad procedur.
Exempel 3 – Ange bara den lagrade proceduren (eller funktionen)
Istället för att inkludera alla argument kan du bara inkludera namnet på den lagrade proceduren. Men om du inte anger @column_name
Om du gör detta returneras en rad för varje kolumn.
Du kan också göra din kod mer kortfattad genom att utelämna argumentnamnet (dvs. endast inkludera dess värde).
EXEC sp_sproc_columns GetCityUpdates;
Resultat (med vertikal utdata):
-[ 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
Exempel 4 – Andra varianter
Du kan tillhandahålla alla varianter av argument för att returnera precis den information du behöver.
Du kan till exempel returnera all information från en viss procedurägare:
EXEC sp_sproc_columns @procedure_owner = 'Integration'
Eller så kan du få information om alla returvärden från alla procedurer och användardefinierade funktioner:
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
Naturligtvis kan du alltid inkludera procedurkvalificeringen om du vill. I SQL Server representerar denna parameter databasnamnet. I vissa produkter representerar det servernamnet för tabellens databasmiljö.
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
Exempel 5 – Jokertecken
@fUsePattern
argument gör att du kan ange om understreck (_
), procent (%
), och parentes ([
]
)-tecken tolkas som jokertecken.
Om du till exempel kör följande kod returneras alla procedurer och användardefinierade funktioner som börjar med Hämta .
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
Så i mitt fall returnerade detta procedurer som GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, etc.
Om jag inaktiverar jokertecken:
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
Jag får inga resultat.