W SQL Server, sp_sproc_columns
systemowa procedura składowana umożliwia uzyskanie informacji o kolumnach dla danej procedury składowanej lub funkcji zdefiniowanej przez użytkownika w bieżącym systemie.
Jest to odpowiednik SQLProcedureColumns w ODBC.
Składnia
Składnia wygląda tak:
sp_sproc_columns [[@procedure_name =] 'nazwa'] [ , [@procedure_owner =] 'właściciel'] [ , [@procedure_qualifier =] 'kwalifikator'] [ , [@nazwa_kolumny =] 'nazwa_kolumny'] [ , @ODBCVer =] 'ODBCVer'] [ , [@fUsePattern =] 'fUsePattern']
Wszystkie argumenty są opcjonalne. Zapoznaj się z dokumentacją firmy Microsoft, aby uzyskać szczegółowe wyjaśnienie tych kwestii.
Przykład 1 – nie określaj żadnych argumentów
Procedurę składowaną można wykonać bez podawania żadnych argumentów. Tak:
EXEC sp_sproc_columns
Lub nawet tak:
sp_sproc_columns
Zwraca wszystkie procedury składowane i funkcje zdefiniowane przez użytkownika w bieżącej bazie danych. Kiedy uruchamiam to z przykładową bazą danych WideWorldImporters, otrzymuję 9077 wierszy. W następnym przykładzie ograniczę go do jednego.
Przykład 2 – Określ wszystkie argumenty
Oto, jak to wygląda, jeśli uwzględnisz wszystkie argumenty.
EXEC sp_sproc_columns @procedure_name ='GetCityUpdates', @procedure_owner ='Integracja', @procedure_qualifier ='WideWorldImporters', @column_name ='@RETURN_VALUE', @ODBCVer =2, @Pattern =1;Wynik (przy użyciu wyjścia pionowego):
PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegracjaPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5TYP_DANYCH | 4TYPE_NAME | intPRECYZJA | 10DŁUGOŚĆ | 4SKALA | 0RADIX | 10 NULL | 0UWAGI | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56W takim przypadku zwracam informacje o wartości zwracanej przez GetCityUpdates procedura składowana.
Przykład 3 – Określ tylko procedurę składowaną (lub funkcję)
Zamiast uwzględniać wszystkie argumenty, możesz podać tylko nazwę procedury składowanej. Jeśli jednak nie określisz
@column_name
, wykonanie tego zwróci wiersz dla każdej kolumny.Możesz również uczynić swój kod bardziej zwięzłym, pomijając nazwę argumentu (tj. Uwzględniając tylko jego wartość).
EXEC sp_sproc_columns GetCityUpdates;Wynik (przy użyciu wyjścia pionowego):
-[ REKORD 1 ]-------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegracjaPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5TYP_DANYCH | 4TYPE_NAME | intPRECYZJA | 10DŁUGOŚĆ | 4SKALA | 0RADIX | 10 NULL | 0UWAGI | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56-[ REKORD 2 ]-------------------------PROCEDURA_KWALIFIKACJI | WideWorldImportersPROCEDURE_OWNER | IntegracjaPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @LastCutoffCOLUMN_TYPE | 1TYP_DANYCH | -9TYPE_NAME | datetime2PRECISION | 27DŁUGOŚĆ | 54SKALA | 7RADIX | NULLNULL | 1UWAGI | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 1IS_NULLABLE | YESSS_DATA_TYPE | 0-[ REKORD 3 ]-------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegracjaPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @NewCutoffCOLUMN_TYPE | 1TYP_DANYCH | -9TYPE_NAME | datetime2PRECISION | 27DŁUGOŚĆ | 54SKALA | 7RADIX | NULLNULL | 1UWAGI | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 2IS_NULLABLE | YESSS_DATA_TYPE | 0Przykład 4 – Inne odmiany
Możesz podać dowolną odmianę argumentów, aby zwrócić tylko te informacje, których potrzebujesz.
Na przykład możesz zwrócić wszystkie informacje od konkretnego właściciela procedury:
EXEC sp_sproc_columns @procedure_owner ='Integracja'Możesz też uzyskać informacje o wszystkich wartościach zwracanych ze wszystkich procedur i funkcji zdefiniowanych przez użytkownika:
EXEC sp_sproc_columns @column_name ='@RETURN_VALUE'Oczywiście, jeśli chcesz, zawsze możesz dołączyć kwalifikator procedury. W SQL Server ten parametr reprezentuje nazwę bazy danych. W niektórych produktach reprezentuje nazwę serwera środowiska bazy danych tabeli.
EXEC sp_sproc_columns @column_name ='@RETURN_VALUE', @procedure_qualifier ='WideWorldImporters';Przykład 5 – Znaki wieloznaczne
@fUsePattern
argument pozwala określić, czy podkreślenie (_
), procent (%
) i nawias ([
]
) znaki są interpretowane jako symbole wieloznaczne.Na przykład uruchomienie następującego kodu zwróci wszystkie procedury i funkcje zdefiniowane przez użytkownika, które zaczynają się od Pobierz .
EXEC sp_sproc_columns @procedure_name ='Pobierz%', @fUsePattern =1;Więc w moim przypadku zwróciło to procedury, takie jak GetCityUpdates, GetCustomerUpdates, GetMovementUpdates itp.
Jeśli wyłączę znaki wieloznaczne:
EXEC sp_sproc_columns @procedure_name ='Pobierz%', @fUsePattern =0;Nie mam wyników.