I SQL Server, sp_sproc_columns
systemlagret procedure giver dig mulighed for at få kolonneoplysninger for en given lagret procedure eller brugerdefineret funktion i det aktuelle system.
Det svarer til SQLProcedureColumns i ODBC.
Syntaks
Syntaksen ser sådan ud:
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
Alle argumenter er valgfrie. Se Microsoft-dokumentationen for en detaljeret forklaring af disse.
Eksempel 1 – Angiv ingen argumenter
Du kan udføre den lagrede procedure uden at angive nogen argumenter. Sådan:
EXEC sp_sproc_columns
Eller endda sådan her:
sp_sproc_columns
Dette returnerer alle lagrede procedurer og brugerdefinerede funktioner i den aktuelle database. Når jeg kører det mod WideWorldImporters-eksempeldatabasen, får jeg 9077 rækker. I det næste eksempel vil jeg indsnævre det til kun én.
Eksempel 2 – Angiv alle argumenter
Sådan ser det ud, hvis du inkluderer alle argumenter.
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
Resultat (ved hjælp af lodret output):
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 dette tilfælde returnerer jeg oplysninger om returværdien af GetCityUpdates gemt procedure.
Eksempel 3 – Angiv kun den lagrede procedure (eller funktion)
I stedet for at inkludere alle argumenter, kan du kun inkludere navnet på den lagrede procedure. Men hvis du ikke angiver @column_name
, hvis du gør dette, returneres en række for hver kolonne.
Du kan også gøre din kode mere kortfattet ved at udelade argumentnavnet (dvs. kun inkludere dets værdi).
EXEC sp_sproc_columns GetCityUpdates;
Resultat (ved hjælp af lodret output):
-[ 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
Eksempel 4 – Andre variationer
Du kan give enhver variation af argumenter for at returnere netop de oplysninger, du har brug for.
For eksempel kan du returnere alle oplysninger fra en bestemt procedureejer:
EXEC sp_sproc_columns @procedure_owner = 'Integration'
Eller du kan få information om alle returværdier fra alle procedurer og brugerdefinerede funktioner:
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
Du kan selvfølgelig altid inkludere procedurekvalifikationen, hvis du ønsker det. I SQL Server repræsenterer denne parameter databasenavnet. I nogle produkter repræsenterer det servernavnet på tabellens databasemiljø.
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
Eksempel 5 – Jokertegn
@fUsePattern
argument giver dig mulighed for at angive, om understregning (_
), procent (%
), og parentes ([
]
)-tegn fortolkes som jokertegn.
For eksempel vil kørsel af følgende kode returnere alle procedurer og brugerdefinerede funktioner, der starter med Hent .
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
Så i mit tilfælde returnerede dette procedurer såsom GetCityUpdates, GetCustomerUpdates, GetMovementUpdates osv.
Hvis jeg deaktiverer jokertegn:
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
Jeg får ingen resultater.