|
|
| _IV_FOREIGN_KEYS | Systémové dotazy | _IV_LOCKS |
Systémový dotaz _iv_procedure_parameters vrací seznam parametrů procedur uložených na serveru. Dovoluje zjistit jména, typy a způsoby předávání parametrů.
Pro každý parametr je v odpovědi na dotaz jeden záznam. Pro funkce je v odpovědi navíc záznam odpovídající návratové hodnotě.
Popis sloupců
| Jméno sloupce | Typ | Obsah |
| Schema_name | CHAR(31) | Jméno schématu (aplikace), do něhož procedura patří |
| Procedure_name | CHAR(31) | Jméno procedury |
| Parameter_name | CHAR(31) | Jméno parametru (prázdné pro návratovou hodnotu funkce) |
| Ordinal_position | INT | Pořadové číslo parametru od 1, 0 pro návratovou hodnotu |
| Data_type | INT | Typ parametru nebo návratové hodnoty |
| Length | INT | Délka (pouze pro typy s údajem o délce) |
| Precision | INT | Počet desetinných míst (pouze pro přesné číselné typy) |
| Direction | INT | Způsob předávání parametru: 1 = IN, 2 = OUT, 3 = INOUT, 0 = návratová hodnota |
| Specif | INT | Specifický parametr typu (např. způsob třídění řetězce) |
Příklad
SELECT * FROM _iv_procedure_parameters WHERE schema_name=´APL1´ AND procedure_name=´PROC´
Dotaz vrátí popis parametrů procedury PROC ze schématu APL1.
Složitější příklad
SELECT Procs.PROC_NAME,COALESCE(SPP.PROC_TYPE,'procedura') AS PROC_TYPE,
COALESCE(SPP.IN_PARAMS,0) AS `#IN_PARAMS`, COALESCE(SPP.OUT_PARAMS,0) AS `#OUT_PARAMS`,
COALESCE(SPP.INOUT_PARAMS,0) AS `#INOUT_PARAMS`
FROM
(SELECT A.obj_name AS PROC_NAME FROM Objtab A, Objtab B
WHERE A.apl_uuid=B.apl_uuid AND B.obj_name=CURRENT_APPLICATION AND B.category=Chr(CATEG_APPL)
AND A.category=Chr(CATEG_PROC)
) AS Procs
LEFT OUTER JOIN
(SELECT PROCEDURE_NAME,
CASE WHEN MIN(direction)=0 THEN 'funkce' ELSE 'procedura' END AS PROC_TYPE,
SUM(CASE direction WHEN 1 THEN 1
ELSE 0 END) AS IN_PARAMS,
SUM(CASE direction WHEN 2 THEN 1
ELSE 0 END) AS OUT_PARAMS,
SUM(CASE direction WHEN 3 THEN 1
ELSE 0 END) AS INOUT_PARAMS
FROM _iv_procedure_parameters WHERE schema_name=CURRENT_APPLICATION
GROUP BY PROCEDURE_NAME
) AS SPP
ON(Procs.PROC_NAME=SPP.procedure_name)
GROUP BY PROC_NAME
Dotaz vrátí seznam rutin v aktuální aplikaci, u každé rutiny typ (procedura x funkce) a počty parametrů podle jejich typů (IN, OUT a INOUT). Protože systémový dotaz _iv_procedure_parameters obsahuje jen rutiny s parametry, musí se seznam rutin vybrat z tabulky objektů.
| _IV_FOREIGN_KEYS | Systémové dotazy | _IV_LOCKS |