[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    Birgitta hat da Recht, da die TABLE-Function nicht auf "set result sets" reagiert.
    Letzteres geht nur in Verbindung mit einem "CALL MYPROC (P1, …, Pn)" und einem Associate Result set:
    https://www.ibm.com/support/knowledg.../t0009168.html

    Per ODBC/JDBC geht das dann erheblich einfacher.

    Eine Table-Function muss, wie in Birgittas Beispiel, implementiert werden.
    Wichtig ist natürlich, dass die 3 Aufrufvarianten bedient werden (Open, Fetch, Close) und beachtet werden muss, dass alle Daten einer Table-Function abgerufen werden!
    Eine Where/Join-Klausel wird erst nach dem Ende der Bereitstellung des Resultsets ausgewertet.

    Hier ist also genau zu überlegen, ob eine solche Funktion Sinn macht, wenn das gesamte Ergebnis u.U. nicht gebraucht wird. Die Parameter sollten dann entsprechend gewählt werden, was allerdings die Verwendung als Join unmöglich macht. Als Lateral Table sollte es aber wiederum funktionieren.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    Ich habe mir das etwas einfacher gemacht:

    Code:
    -- ERSTELLEN TABELLENFUNKTION ZUM DOWNLOAD DER ABWEICHENDEN NA-GRÜNDE    
    CREATE OR REPLACE FUNCTION BIUMO220.GETBDELNA                            
    (YYFIRM CHAR(1)                                                          
    ,YYWKNR CHAR(3)                                                          
    )                                                                        
    RETURNS TABLE (B1FIRM   CHAR(1)                                          
                  ,B1WKNR   CHAR(3)                                          
                  ,B1AGRF   DEC(11, 0)                                       
                  ,B1TXNR   CHAR(6)                                          
                  ,B1KOMP   CHAR(13)                                         
                  )                                                          
    LANGUAGE SQL                                                             
    MODIFIES SQL DATA                                                        
    BEGIN                                                                    
      CALL BIUMO220.FUEBDELNA(YYFIRM, YYWKNR);                               
      RETURN SELECT *                                                        
               FROM BDELNA                                                   
              WHERE B1FIRM = YYFIRM                                          
                AND B1WKNR = YYWKNR;                                         
    END;
    Die Tabelle wird von mir dann in dem CALL-Programm gefüllt.
    An Stelle einer statischen Tabelle kann man auch eine Tabelle in QTEMP verwenden um eine Parallelisierung zu ermöglichen. Hier war das nicht gefordert, da der Zugriff per ODBC erfolgt und alle Daten benötigt werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQL - Create Tabel - Objektberechtigung *PUBLIC auf *CHANGE
    By loisl in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 23-05-16, 16:23
  2. create tabel ohne level check
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 29-09-15, 15:07

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •