column

Die SQLRecord-Feldeigenschaft 'column' gibt den Namen der Datenbanktabellenspalte an, die dem Feld zugeordnet ist.

Der Standardwert ist der Name des Feldes. EGL verwendet den Spaltennamen und das zugehörige Feld zum Erstellen von SQL-Standardanweisungen (siehe 'SQL-Datenzugriff').

Der Spaltenname kann eine Zeichenfolge in Anführungszeichen, eine Zeichenvariable oder eine Verkettung sein, wie im folgenden Beispiel:
Record CustomerRecordPart type SQLRecord {tableNames = [["CUSTOMER"]]}
   customerNumber INT    {column = "Column" :: "01"};
   ...
end
Darüber hinaus kann die Zeichenfolge in Anführungszeichen selbst komplex sein, wie im folgenden Beispiel:
record Q type SQLRecord
  myField int { column = "COLUMN01 || 10 + COLUMN02 * 5" };
end
Einschränkung: Wenn Sie eine EGL-Anweisung 'add' oder 'replace' codieren, die auf einen komplexen Wert der Eigenschaft 'column' (wie den zuvor gezeigten Wert) zugreift, sind die für Sie generierten SQL-Anweisungen INSERT und UPDATE möglicherweise nicht gültig.

Wenn Sie einen komplexen Wert codiert haben, weil Sie eine INTO-Klausel für eine Anweisung SELECT generieren wollen, sollten Sie erwägen, Ihre eigene INTO-Klausel bereitzustellen. Details hierzu finden Sie im Abschnitt zur Einschränkung bei der Anweisung SELECT im Thema 'Hinweise zu 'get' für SQL'.

Der Wert der Eigenschaft 'column' kann unter Umständen ein Qualifikationsmerkmal enthalten. Bei dem Qualifikationsmerkmal kann es sich um einen Tabellennamen oder um einen Schemanamen, gefolgt von einem Tabellennamen, handeln. Das folgende Beispiel referenziert das Schema MYSCHEMA und die Tabelle CUSTOMER:
Record CustomerRecordPart type SQLRecord {tableNames = [["MYSCHEMA.CUSTOMER"]]}
   customerNumber INT    {column = "MYSCHEMA.CUSTOMER.Column01"};
   ...
end
Betrachen Sie folgenden Fall: Ihr Code enthält eine Anweisung 'get' oder 'open', die einen SQL-Datensatz verwendet, eine explizite SQL-Anweisung einschließt und keine INTO-Klausel aufweist. Es folgt ein Beispiel eines EGL-Codes, der eine solche Anweisung 'get' einschließt:
customer CustomerRecord{};
get customer with #sql{
   select MySCHEMA.CUSTOMER.Column01
   from MYSCHEMA.CUSTOMER
   where MYSCHEMA.CUSTOMER.Column02 = "AZ"}; 

In der zuvor beschriebenen Anweisung 'get' oder 'open' muss die für einen Spaltennamen in der SQL-Klausel SELECT verwendete Qualifizierung mit der Qualifizierung übereinstimmen, die für das entsprechende Feld im Datensatzabschnitt verwendet wird.

Darüber hinaus ist eine spezielle Syntax erforderlich, wenn ein Spaltenname einem der folgenden reservierten SQL-Wörter entspricht:
Wie im folgenden Beispiel gezeigt, muss jeder dieser Namen zweimal in doppelte Anführungszeichen eingebettet sein, wobei vor den inneren beiden Anführungszeichen jeweils ein Escapezeichen (\) stehen muss:
  column = "\"SELECT\""

Ähnliches gilt, wenn Sie eines dieser reservierten Wörter als Tabellennamen verwenden.


Feedback