sql >> Databáze >  >> RDS >> Sqlserver

Vrácení informací o sloupci pro uloženou proceduru na serveru SQL Server:sp_sproc_columns

V SQL Server, sp_sproc_columns systémová uložená procedura vám umožňuje získat informace o sloupcích pro danou uloženou proceduru nebo uživatelem definovanou funkci v aktuálním systému.

Je ekvivalentní SQLProcedureColumns v ODBC.

Syntaxe

Syntaxe vypadá takto:

sp_sproc_columns [[@procedure_name =] 'name'] [ , [@procedure_owner =] 'owner'] [ , [@procedure_qualifier =] 'qualifier'] [ , [@column_name =] 'column_name'] [ , [ @ODBCVer =] 'ODBCVer'] [ , [@fUsePattern =] 'fUsePattern']

Všechny argumenty jsou volitelné. Podrobné vysvětlení naleznete v dokumentaci společnosti Microsoft.

Příklad 1 – Nezadávejte žádné argumenty

Uloženou proceduru můžete spustit bez zadání jakýchkoli argumentů. Takhle:

EXEC sp_sproc_columns

Nebo dokonce takto:

sp_sproc_columns

To vrátí všechny uložené procedury a uživatelem definované funkce v aktuální databázi. Když to spustím proti ukázkové databázi WideWorldImporters, dostanu 9077 řádků. V dalším příkladu to zúžím jen na jeden.

Příklad 2 – Zadání všech argumentů

Takto to vypadá, když zahrnete všechny argumenty.

EXEC sp_sproc_columns @procedure_name ='GetCityUpdates', @procedure_owner ='Integrace', @procedure_qualifier ='WideWorldImporters', @column_name ='@RETURN_VALUE', @ODBCVer =2, @fUse =2, @fUse 

Výsledek (při použití vertikálního výstupu):

PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegrationPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5DATA_TYPE | 4TYPE_NAME | intPRECISION | 10DÉLKA | 4MĚŘÍTKO | 0RADIX | 10NULLABLE | 0POZNÁMKY | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56

V tomto případě vrátím informace o návratové hodnotě GetCityUpdates uložená procedura.

Příklad 3 – Zadejte pouze uloženou proceduru (nebo funkci)

Namísto zahrnutí všech argumentů můžete zahrnout pouze název uložené procedury. Pokud však nezadáte @column_name , tím se vrátí řádek pro každý sloupec.

Svůj kód můžete také zkrátit vynecháním názvu argumentu (tj. pouze včetně jeho hodnoty).

EXEC sp_sproc_columns GetCityUpdates;

Výsledek (při použití vertikálního výstupu):

-[ ZÁZNAM 1 ]-------------------------KVALIFIKACE POSTUPU | WideWorldImportersPROCEDURE_OWNER | IntegrationPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5DATA_TYPE | 4TYPE_NAME | intPRECISION | 10DÉLKA | 4MĚŘÍTKO | 0RADIX | 10NULLABLE | 0POZNÁMKY | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56-[ ZÁZNAM 2 ]-------------------------KVALIFIKACE POSTUPU | WideWorldImportersPROCEDURE_OWNER | IntegrationPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @PosledníCutoffCOLUMN_TYPE | 1DATA_TYPE | -9TYPE_NAME | datetime2PRECISION | 27DÉLKA | 54MĚŘÍTKO | 7RADIX | NULLLABLE | 1POZNÁMKY | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 1IS_NULLABLE | YESSS_DATA_TYPE | 0-[ ZÁZNAM 3 ]-------------------------KVALIFIKACE POSTUPU | WideWorldImportersPROCEDURE_OWNER | IntegrationPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @NewCutoffCOLUMN_TYPE | 1DATA_TYPE | -9TYPE_NAME | datetime2PRECISION | 27DÉLKA | 54MĚŘÍTKO | 7RADIX | NULLLABLE | 1POZNÁMKY | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 2IS_NULLABLE | YESSS_DATA_TYPE | 0

Příklad 4 – Další varianty

Můžete poskytnout libovolnou variantu argumentů, abyste vrátili pouze informace, které požadujete.

Můžete například vrátit všechny informace od konkrétního vlastníka procedury:

EXEC sp_sproc_columns @procedure_owner ='Integrace'

Nebo můžete získat informace o všech návratových hodnotách ze všech procedur a uživatelsky definovaných funkcí:

EXEC sp_sproc_columns @column_name ='@RETURN_VALUE'

Samozřejmě můžete vždy zahrnout kvalifikátor postupu, pokud si přejete. V SQL Server tento parametr představuje název databáze. V některých produktech představuje název serveru databázového prostředí tabulky.

EXEC sp_sproc_columns @column_name ='@RETURN_VALUE', @procedure_qualifier ='WideWorldImporters';

Příklad 5 – Zástupné znaky

@fUsePattern argument umožňuje určit, zda podtržítko (_ ), procenta (% ) a závorka ([ ] ) znaky jsou interpretovány jako zástupné znaky.

Například spuštění následujícího kódu vrátí všechny procedury a uživatelem definované funkce, které začínají Get .

EXEC sp_sproc_columns @procedure_name ='Get%', @fUsePattern =1;

Takže v mém případě to vrátilo procedury jako GetCityUpdates, GetCustomerUpdates, GetMovementUpdates atd.

Pokud zakážu zástupné znaky:

EXEC sp_sproc_columns @procedure_name ='Get%', @fUsePattern =0;

Nemám žádné výsledky.


  1. Pole data a času v MySQL a letní čas – jak mohu odkazovat na hodinu navíc?

  2. PHP PDO připravené výpisy

  3. Funkce SQL Row_Number() v klauzuli Where

  4. Vysvětlení rámce MySQL High Availability Framework – Část I:Úvod