Příkaz GET DIAGNOSTICS

Z PostgreSQL
Přejít na: navigace, hledání

Tento příkaz je v SQL/PSM poměrně vágně definován a je celkem i dost odlišně implementován v různých databázích podporujících SQL/PSM. Částečně se od sebe odlišuje syntaxe, liší se i názvy některých diagnostických klíčů. V PL/pgPSM jsou definovány následující klíče: ROW_COUNT, RESULT_OID, RETURNED_SQLSTATE, MESSAGE_TEXT, MESSAGE_LENGTH, PG_MESSAGE_HINT, PG_MESSAGE_DETAIL, CONSTRAINT_NAME. Standard definuje další klíče (němluvě o dalších desitkách klíču v SQLPL), ty však nejsou poskytované jádrem PostgreSQL a proto nemohou být používány ani v PL/pgPSM.

Syntaxe

GET [CURRENT|STACKED] DIAGNOSTICS [(CONDITION|EXCEPTION) hloubka] proměnná = klíč [,...];

Hodnoty přiřazené k jednotlivým klíčům jsou získávány z tzv. diagnostických oblastí (skupina klíčů). Pokud se aktivuje exception handler, dojde k uložení aktuální diagnostické oblasti na zásobník a k vytvoření její kopie, která se dále považuje za aktuální. Po opuštění těla handleru se oblast ze zásobníku vyvolá zpět. Provádění příkazů vždy ovlivňuje jen aktuální diagnostickou oblast. K uloženým oblastem má přístup jen příkaz GET STACKED DIAGNOSTICS. Tato technika umožňuje získat diagnostické informace o výjimce, která aktivovala handler i ve všech příkazech těla handleru (bez této techniky jsme museli proměnné přečíst prvním příkazem v těle handleru).