602SQL-Úplná dokumentace Index  

Systémový dotaz _IV_PROCEDURE_PARAMETERS

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ů.