Multiple-Row-Funktion

Dieser Abschnitt enthält Informationen zur Unterstützung von Insert- und Fetch-Anweisungen einer Multiple-Row-Funktion in Rational Business Developer V9.0.

Rational Business Developer V9.0 umfasst eine neue Multiple-Row-Funktion zur Verbesserung der Leistung beim Zugriff auf SQL-Tabellen. Mit dieser neuen Funktion können Sie während einer Interaktion mit der Datenbank so viele Zeilen wie angefordert abrufen oder einfügen.

Der Unterschied zwischen der Fetch-Anweisung einer Single-Row-Funktion und der Fetch-Anweisung einer Multiple-Row-Funktion wird nachfolgend erläutert:

Fetch-Anweisung von Single-Row-Funktion im Vergleich zu Fetch-Anweisung von Multiple-Row-Funktion

Rational Business Developer V9.0 unterstützt Multiple-Row-Operationen bei OPEN-, GET-, ADD- und REPLACE-Anweisungen für SQL-Datensätze. Details finden Sie in den Abschnitten zu den Anweisungen Überlegungen zu 'open' mit SQL, Überlegungen zu 'get' mit SQL, Überlegungen zum Hinzufügen mit SQL Überlegungen zu 'delete' mit SQL, und Überlegungen zu 'replace' mit SQL

Beispiel

Im folgenden Beispiel wird dargestellt, wie die angeforderte Anzahl Zeilen abgerufen wird. Passen Sie alle Abschnitte dieses Codes an Ihre eigene Anwendung an.

Multiple-Row- oder Rowset-Verarbeitung wird in EGL-SQL aktiviert durch Angabe einer Eigenschaft rowsetsize in einer Variablendeklaration einer dynamischen Feldgruppe oder durch die Verwendung der Eigenschaft rowsetsize in der Anweisung open.
employees employeeRecord[0]{rowsetsize=10};  

//assume table EMPLOYEETEST contains 10,000 rows, the result 
// set for the below SQL will return 10,000 rows

// it uses rowset processing to interact with the database

Open abc with #sql{
    select eID, uName, PASSWORD, fName, lName, office, sex, EMail
    from EMPLOYEETEST
    order by eID
} for employees;

get next employees;  //this returns an 10 element array with 
                     //the first 10 rows of the result set


while ( sysvar.sqlData.sqlcode == 0 )

   // sysvar.sqlData.sqlerrd[3] will contains the number of returned rows

   for ( i int from 1 to sysvar.sqlData.sqlerrd[3] )

     // if eid is greater than 2000, stop fetching more rows.
     // This is what is meant by "demanded" 
        if ( employees[i].eID > 2000 ) 
            exit while;
        end
        SysLib.writeStdout( employees[i].fName );
    end

    get next employees;  //this returns the next 10 rows and 
                         //replaces rows in array

end
close abc;
Tabelle 1. Hinweise zur Kompatibilität für Löschen
Plattform Problem
Java-Generierung und -Debugging Die Anweisung get diagnostics wird nicht unterstützt. Die Generierung ist erfolgreich, aber bei der Verwendung der Anweisung get diagnostics wird sqlException während der Laufzeit zurückgegeben oder wenn die Anweisung den Debugger durchläuft.

Feedback