Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zwróć informacje o kolumnie dla procedury przechowywanej w programie SQL Server:sp_sproc_columns

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 | 56

W 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 | 0

Przykł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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można obciąć tabeli, ponieważ odwołuje się do niej ograniczenie klucza obcego?

  2. Zaktualizuj wartość klucza podstawowego za pomocą struktury encji

  3. Jak przekonwertować uniksowy znacznik czasu na wartość daty/godziny w SQL Server

  4. Jak wyświetlić listę wszystkich tabel we wszystkich bazach danych w programie SQL Server w jednym zestawie wyników?

  5. Jak usunąć pierwsze 1000 wierszy z tabeli za pomocą SQL Server 2008?