In SQL Server, sp_sproc_columns
la procedura memorizzata di sistema consente di ottenere informazioni sulla colonna per una determinata procedura memorizzata o una funzione definita dall'utente nel sistema corrente.
È equivalente a SQLProcedureColumns in ODBC.
Sintassi
La sintassi è questa:
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
Tutti gli argomenti sono facoltativi. Consulta la documentazione Microsoft per una spiegazione dettagliata di questi.
Esempio 1:non specificare argomenti
È possibile eseguire la procedura memorizzata senza fornire alcun argomento. In questo modo:
EXEC sp_sproc_columns
O anche così:
sp_sproc_columns
Ciò restituisce tutte le procedure memorizzate e le funzioni definite dall'utente nel database corrente. Quando lo eseguo sul database di esempio WideWorldImporters, ottengo 9077 righe. Nel prossimo esempio lo restringerò a uno solo.
Esempio 2:specificare tutti gli argomenti
Ecco come appare se includi tutti gli argomenti.
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
Risultato (usando l'output 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
In questo caso, restituisco informazioni sul valore di ritorno di GetCityUpdates procedura memorizzata.
Esempio 3:specificare solo la stored procedure (o funzione)
Anziché includere tutti gli argomenti, è possibile includere solo il nome della stored procedure. Tuttavia, se non specifichi il @column_name
, in questo modo verrà restituita una riga per ogni colonna.
Inoltre, puoi rendere il tuo codice più conciso omettendo il nome dell'argomento (cioè includendo solo il suo valore).
EXEC sp_sproc_columns GetCityUpdates;
Risultato (usando l'output 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
Esempio 4 – Altre variazioni
Puoi fornire qualsiasi variazione di argomenti per restituire solo le informazioni richieste.
Ad esempio, potresti restituire tutte le informazioni da un particolare proprietario della procedura:
EXEC sp_sproc_columns @procedure_owner = 'Integration'
Oppure potresti ottenere informazioni su tutti i valori restituiti da tutte le procedure e le funzioni definite dall'utente:
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
Naturalmente, se lo desideri, puoi sempre includere il qualificatore di procedura. In SQL Server, questo parametro rappresenta il nome del database. In alcuni prodotti, rappresenta il nome del server dell'ambiente di database della tabella.
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
Esempio 5 – Caratteri jolly
Il @fUsePattern
argomento consente di specificare se il carattere di sottolineatura o meno (_
), percentuale (%
) e parentesi ([
]
) i caratteri vengono interpretati come caratteri jolly.
Ad esempio, l'esecuzione del codice seguente restituirà tutte le procedure e le funzioni definite dall'utente che iniziano con Get .
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
Quindi, nel mio caso, questo ha restituito procedure come GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, ecc.
Se disabilito i caratteri jolly:
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
Non ottengo risultati.