Rekursive Prozeduraufrufe in SQLScript

Bis SAP HANA 2.0 SPS03 waren rekursive Aufrufe Prozeduren in SQLScript nicht erlaubt. Das bedeutet, dass sich eine Prozedur weder direkt noch indirekt über andere Prozeduren aufrufen darf. Diese Einschränkung wurde mit dem SPS04 aufgehoben. Allerdings ist die Aufruftiefe auf 32 beschränkt und Prozeduren in Bibliotheken erlauben ebenfalls keine rekursiven Aufrufe. In sehen Sie ein Beispiel für die rekursive Berechnung der Fibonacci Zahlen. Bitte seien Sie vorsichtig, wenn Sie diese Prozedur mit zu großen Parametern (>20) aufrufen, kann es schnell passieren, dass das SAP HANA System an seine Grenzen kommt.

 CREATE PROCEDURE fibonacci(IN iv_value INT,
                            OUT rv_result INT)
 AS BEGIN
   DECLARE lv_tmp INT;
   
   IF iv_value IN (1, 2)
     THEN rv_result = 1;
   ELSE
     fibonacci( iv_value - 1 , rv_result );
     fibonacci( iv_value - 2 , lv_tmp );
     rv_result = rv_result + lv_tmp;
   END IF;
 END; 
  
 CALL fibonacci(20, ?); 

Listing: Rekursive Berechnung der Fibonacci-Zahlen

Hier ist der Link zur SAP Dokumentation zu dem Thema. Soweit mir bekannt ist, werden keine rekursiven Abfragen unterstützt.

This post is also available in: English

%d Bloggern gefällt das: