constructQuery()
Sie können 'sqlLib.constructQuery()' verwenden, um eine SQL-Bedingung zurückzugeben (die mit einer Anweisung WHERE verwendet werden soll), die auf einem Wörterverzeichnis basiert, das Vergleichsoperatoren und -werte enthält.
Syntax
sqlLib.constructQuery(
SQL-Datensatz Record inOut,
Wörterverzeichnis Dictionary inOut,
matchByName BOOLEAN in )
returns (Bedingung STRING)
- SQL-Datensatz
- Stellt die SQL-Spaltennamen bereit, die den Datensatzfeldern und zugeordneten Datentypen entsprechen.
- Wörterverzeichnis
- Enthält Name/Wert-Paare, wobei die Namen den Feldnamen aus dem Element 'SQL-Datensatz' entsprechen. Die Werte enthalten Operatoren und Vergleichswerte.
- matchByName
- Wenn 'matchByName' auf YES gesetzt ist, werden die Wörterverzeichnisnamen mit den Elementnamen in 'SQL-Datensatz' abgeglichen, und die Abfrage wird generiert. Wenn 'matchByName' auf NO gesetzt wird, wird das erste Element im Wörterverzeichnis für das erste Element im Datensatz verwendet usw. Abweichungen werden von EGL in der Anzahl der Elemente ignoriert.
- Bedingung
- Ordnen Sie diese Bedingung einer Zeichenfolgevariablen (STRING) zu und verwenden Sie sie in einer WHERE-Klausel. Weitere Informationen finden Sie unter 'Beispiel' in diesem Thema.
Beispiel
Das folgende Beispielprogramm erstellt eine Bedingungszeichenfolge (myCondition) aus einem Kundendatensatz (CustomerRecord) und einem Wörterverzeichnis (Dictionary).
package com.companyb.gl;
record CustomerRecord type SQLRecord
{tableNames = [["ADMINISTRATOR.CUSTOMER", "L1"]],
keyItems = [customerNumber]}
customerNumber STRING {column="C_NUMBER", maxLen=6};
customerName STRING {column="C_NAME", isSQLNullable=yes, maxLen=25};
customerAddr1 STRING {column="C_ADDR1", isSQLNullable=yes, maxLen=25};
customerAddr2 STRING {column="C_ADDR2", isSQLNullable=yes, maxLen=25};
customerAddr3 STRING {column="C_ADDR3", isSQLNullable=yes, maxLen=25};
customerBalance MONEY {column="C_BALANCE", isSQLNullable=yes};
end
program calc3
myDictionary Dictionary {};
myCustomer CustomerRecord;
myCondition STRING;
function main()
myDictionary.customerNumber = ">A20045";
myDictionary.customerBalance = "!= 0";
myCondition = sqlLib.constructQuery(myCustomer, myDictionary, YES);
prepare stmtID from "SELECT * FROM customer WHERE " + myCondition;
get customerArray with stmtID;
end // Ende von 'main'
end // Ende von 'program'
Der Inhalt von myCondition besteht aus Folgendem: "C_NUMBER > 'A20045' AND C_BALANCE <> 0".