g+++Vorbereitete Anweisung ausführen

Das Schlüsselwort prepare erstellt eine SQL-Anweisung aus einer Zeichenfolge. Diese vorbereitete Anweisung kann daraufhin mit einer anderen Datenzugriffsanweisung ausgeführt werden.

Wenn Sie anstelle von explizitem SQL-Code vorbereitete Anweisungen verwenden, kann die Leistung für wiederholt verwendete Datenzugriffsoperationen verbessert werden. Bei der Erstellung einer vorbereiteten Anweisung führt die Datenbank einen Großteil der erforderlichen Verarbeitungsschritte vorzeitig aus, sodass die Ausführung der vorbereiteten Anweisung weniger Verarbeitungsaufwand erfordert. Ob Sie eine vorbereitete Anweisung oder expliziten SQL-Code verwenden, hängt von der Häufigkeit der Verwendung der Datenzugriffsoperation ab.

Im Grunde unterscheidet sich die Ausführung einer vorbereiteten Anweisung nicht von der Ausführung eines expliziten SQL-Codes. Die folgenden beiden Funktionen entsprechen sich:
function executeExplicitSQL()
    myCustomers myCustomers[0];
    get myCustomers with #sql{
        SELECT CUSTOMER_ID, LAST_NAME
        FROM MYSCHEMA.MYTABLE
    };
end

function executePreparedStatement()
    myCustomers myCustomers[0];
    prepare myStatement from 
        "SELECT CUSTOMER_ID, LAST_NAME FROM MYSCHEMA.MYTABLE";
    get myCustomers with myStatement;
end

In den obigen Beispielen wird die Anweisung get zur Ausführung der vorbereiteten Anweisung verwendet; execute oder open können jedoch ebenfalls verwendet werden. In jedem Fall muss die vorbereitete Anweisung für die Datenzugriffsanweisung geeignet sein. Wenn es also möglich ist, die Zeichenfolge als expliziten SQL-Code auszuführen, können Sie die Zeichenfolge auch als vorbereitete Anweisung vorbereiten und ausführen. prepare kann für SQL-Standardanweisungen wie SELECT, für dynamische SQL-Anweisungen mit Variablen sowie für Aufrufe an gespeicherte Prozeduren verwendet werden.

Anmerkung: Die EGL-Anweisung prepare entspricht nicht dem Objekt 'PreparedStatement' in Java™, obwohl beide zur Verbesserung der Leistung beitragen. Informationen zum Objekt 'PreparedStatement' in Java finden Sie in prepareAllSQLStatements.

Anweisung vorbereiten und ausführen

Zur Vorbereitung der Anweisung müssen Sie zuerst eine Zeichenfolgevariable für die Anweisung erstellen. Wie bei jeder Zeichenfolge können Sie der Variablen direkt einen Wert zuweisen oder den Wert aus mehreren Zeichenfolgen oder Variablen zusammensetzen:
myString string = "SELECT ";
myString += "CUSTOMER_ID, LAST_NAME ";
myString += "FROM MYSCHEMA.MYTABLE";

Dann können Sie die vorbereitete Anweisung mithilfe von prepare aus der Variablen erstellen, wobei Sie die Anweisung einer neuen ID zuweisen:

prepare myStatement from myString;
Ferner können Sie eine for-Klausel hinzufügen, um den SQLRecord für die vorbereitete Anweisung anzugeben:
myCustomer myCustomers;
prepare myStatement2 from myString for myCustomer;
Schließlich führen Sie die Anweisung aus und fügen die Ergebnisse in eine Variable ein:
myCustomerArray myCustomers[];
get myCustomerArray with myStatement2;

Variablen in der vorbereiteten Anweisung verwenden

Vorbereitete Anweisungen sind besonders nützlich, wenn Sie Variablen in die Anweisung einfügen möchten. Variablen in vorbereiteten Anweisungen sind noch wirksamer als Hostvariablen in normalem expliziten SQL-Code, da Sie nicht nur einen EGL-Variablenwert einfügen, sondern ändern können, welche Variable von der dynamischen Anweisung verwendet wird.

Bei der Erstellung einer vorbereiteten Anweisung verwenden Sie zur Darstellung der Variablen ein Fragezeichen (?). Das Fragezeichen fungiert als Platzhalter, in den Sie später mit der Klausel using einen Wert einfügen können:
myCustomerID int = 5;
myCustomerArray myCustomers[];
myHostVarString string = "SELECT CUSTOMER_ID, LAST_NAME";
myHostVarString += " FROM MYSCHEMA.MYTABLE";
myHostVarString += " WHERE CUSTOMER_ID = ?";
prepare myStatement from myHostVarString;
get myCustomerArray with myHostVarString using myCustomerID;
In diesem Fall können Sie die Klausel using myCustomerID so ändern, dass in verschiedenen Situationen unterschiedliche Variablen verwendet werden.

Detaillierte vorbereitete Anweisung erstellen

EGL stellt ferner ein Tool bereit, das eine Anweisung prepare und die zugehörigen Anweisungen execute, get und open erstellt.

  1. Klicken Sie innerhalb einer Funktion in Ihrem Logikabschnitt mit der rechten Maustaste auf eine leere Zeile und klicken Sie dann auf SQL-Anweisung PREPARE hinzufügen. Das Fenster 'SQL-Anweisung PREPARE hinzufügen' wird geöffnet.
  2. Geben Sie in das Feld ID der vorbereiteten Anweisung einen Namen für die EGL-Anweisung prepare ein. Informationen zu den diesbezüglichen Regeln finden Sie im Abschnitt zu Namenskonventionen im Handbuch EGL Language Reference+++.
  3. Wählen Sie im Feld Name der SQL-Satzvariablen eine Satzvariable aus der Liste aus oder geben Sie einen Namen für eine neue Variable ein. Wählen Sie dann mithilfe der Schaltfläche Durchsuchen einen SQL-Satzabschnitt aus. Später müssen Sie dann im EGL-Quellcode eine SQL-Satzvariable mit diesem Namen definieren.
  4. Wählen Sie im Feld Typ der Ausführungsanweisung entweder execute, get oder open aus.
  5. Bei Auswahl von open im Feld Typ der Ausführungsanweisung geben Sie in das Feld ID der Ergebnisliste eine ID für die Ergebnisliste ein.
  6. Klicken Sie auf OK. EGL erstellt die Anweisung prepare sowie die zugehörige Datenzugriffsanweisung.

Feedback