Rekursive DECLARE CURSOR-Anweisung (recursive_declare_cursor_statement)
Mit Hilfe der rekursiven DECLARE CURSOR-Anweisung (
recursive_declare_cursor_statement ) ist es möglich, Stücklisten mittels eines Befehls zu erhalten.Syntax
<recursive_declare_cursor_statement> ::= DECLARE <result_table_name> CURSOR FOR
WITH RECURSIVE <reference_name> (<alias_name>,...) AS
(<initial_select> UNION ALL <recursive_select>) <final_select>
<initial_select> ::= <query_spec>
<recursive_select> ::= <query_spec>
<final_select> ::= <select_statement>
DECLARE C CURSOR FOR
WITH RECURSIVE PX (MAJOR, MINOR, NUMBER, MAINMAJOR) AS
(SELECT W,X,Y,W FROM T WHERE W = 'aaa' UNION ALL
SELECT W,X,Y,MAINMAJOR FROM T, PX WHERE MINOR = T.W)
SELECT MAINMAJOR,MINOR,NUMBER FROM PX ORDER BY NUMBER
Erläuterung
Wenn vor der Ausführung der rekursiven DECLARE CURSOR-Anweisung ein
Ergebnistabellenname mit dem angegebenen Referenznamen existierte, so wird der entsprechende Cursor implizit geschlossen.