Ansicht
Dokumentation

ABENOS_QUERY_FILTER_COND - OS QUERY FILTER COND

ABENOS_QUERY_FILTER_COND - OS QUERY FILTER COND

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Query-Bedingungen

Die Query-Bedingung ist ein logischer Ausdruck, der die Attribute einer persistenten Klasse mit freien Parametern bzw. Werten vergleicht. Die Syntax einer Query-Bedingung ist an die Syntax der WHERE-Bedingung von angelehnt, wobei zusätzlich auch Referenzvariablen für Objektreferenzen unterstützt werden. Wie eine WHERE-Bedingung ist eine Query-Bedingung aus elementaren Vergleichen aufgebaut, die mit den Booleschen Operatoren AND, OR und NOT kombiniert werden können, wobei eine Klammerung mit runden Klammern unterstützt wird.

Bei Ausführung einer Query über einen Klassenakteur, ist diese an genau dessen persistente Klasse gebunden. Die in einer Query-Bedingung angegebenen Attribute müssen in der persistenten Klasse als öffentliche persistente Attribute vorhanden sein, sonst kommt es zu einer Ausnahme. Auf der anderen Seite kann eine einmal erzeugte Query durchaus nacheinander von Klassenakteuren verschiedener persistenter Klassen ausgeführt werden, solange die angegebenen Attribute vorhanden sind. Intern wird bei Ausführung einer Query eine SELECT-Anweisung mit einer WHERE-Bedingung erzeugt, in der die Attribute durch konkrete Spaltenbezeichner und die freien Parameter durch aktuelle Werte ersetzt werden.

In einer Query-Bedingung werden nachstehende elementare Vergleichsoperatoren unterstützt. Als erster Operand einer Bedingung muss ein Attribut attr einer persistenten Klasse angegeben sein. Der zweite Operand operand oder pattern eines Vergleichs kann entweder ein Attribut, ein Parameter par oder ein literaler Wert sein.

Die Namen von Parametern sind über die Angabe einer Parameterliste frei definierbar. Die Parameterliste ist eine Liste von Parameternamen, die in der Query-Bedingung verwendet werden können. Die Position des Parameters in der Parameterliste definiert den Index des Parameters in der Parametertabelle. Ist keine Parameterliste angeben, wird eine vordefinierte Parameterliste mit den drei Parameternamen PAR1, PAR2, PAR3 verwendet.

Literale Werte werden generell durch Hochkommata eingeschlossen. Die Semantik der Vergleichsoperatoren wird durch das entsprechende-Sprachelement definiert, in das der logische Ausdruck umgesetzt wird.

Hinweis

Die Sortierbedingung und ihre Parameterliste werden bei Ausführung einer Query analysiert und dabei in eine interne Darstellung transformiert. Um das Parsen bei jeder Ausführung zu umgehen, können mit den Methoden des Interfaces IF_OS_QUERY_EXPR_FACTORY mehrfach verwendbare Query-Bedingungen in der internen Darstellung erzeugt werden.

  • Der Aufbau einer Query-Bedingung im Programm gehört zu den dynamischen Programmiertechniken.
  • Um SQL-Injections zu verhindern, ist die Verwendung von Parametern aus einer Parameterliste einer Verkettung vorzuziehen, in der dynamische Werte als Literale dargestellt werden.

Vergleichsoperatoren

attr =$|<>$|$|>$|=$|>= ${ operand $}

LIKE

attr $[NOT$] LIKE ${ pattern $} $[ESCAPE escape$]

IS NULL

attr IS $[NOT$] NULL

EQUALSREF

attr EQUALSREF par

Vergleich zweier Objektreferenzen. Der Parameter par muss bei Ausführung der Query an eine Referenzvariable gebunden sein, die auf eine persistente Instanz einer persistenten Klasse verweist.

AND, OR, NOT

NOT expr

expr AND expr

expr OR expr

Die Semantik der Booleschen Operatoren AND, OR und NOT wird ebenfalls durch ihre Semantik in definiert. Es kann eine explizite Klammerung vorgenommen werden. Falls keine Klammern angegeben wird, gelten Prioritätsregeln von .

Beispiele

price  '100' AND currency = 'EUR'

name LIKE PAR1 AND age > '45' AND age  '65'

( department EQUALSREF DEP1 OR department EQUALSREF DEP2 ) AND NOT
( salary > '50000' AND currency = 'EUR' ) )






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6075 Date: 20240523 Time: 110558     sap01-206 ( 110 ms )