Ansicht
Dokumentation

ABENOPEN_SQL_PATH_FILTER - OPEN SQL PATH FILTER

ABENOPEN_SQL_PATH_FILTER - OPEN SQL PATH FILTER

BAL Application Log Documentation   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Pfadausdrücke, attributes

Syntax

... [ $[(n$|*) $[INNER$|${LEFT$|RIGHT OUTER$}$]$] $[$[WHERE$] sql_cond$] ] ...

Zusätze:

1. ... (n$|*)

2. ... INNER$|${LEFT$|RIGHT OUTER$}

3. ... $[WHERE$] sql_cond

Wirkung

Für jede CDS-Assoziation oder CTE-Assoziation _assoc eines in einer Datenquelle einer FROM-Klausel oder einer Spaltenangabe angegebenen Pfadausdrucks können in eckigen Klammern Attribute für diesen Abschnitt des Pfadausdrucks definiert werden. Mit diesen Attributen kann

  • die Kardinalität des Abschnitts deklariert werden
  • die Art des Join-Ausdrucks festgelegt werden
  • eine Filterbedingung sql_cond angegeben werden

Zusatz 1

... (n$|*)

Wirkung

Mit der Angabe einer Zahl n oder des Zeichens * in runden Klammern ( ) wird die Kardinalität der aktuellen Assoziation _assoc deklariert. Für n können die Zahlen 1 und 2 angegeben werden. Die Angabe der Kardinalität überschreibt die Definition der Kardinalität [min..max] bzw. TO ONE$|MANY der aktuellen Assoziation mit "zu 1", "zu 2" oder "zu *".

  • Mit der Angabe der Kardinalität können Syntaxwarnungen bzw. Syntaxfehler verhindert werden, wenn die Kardinalität der Assoziation nicht zu ihrer Verwendung in einem Pfadausdruck einer SELECT-Anweisung passt.
  • Bei der Angabe von (1) wird auf Datenbanksystemen, die dies unterstützen, ein links äußerer Join (LEFT OUTER JOIN) implizit mit dem Zusatz MANY TO ONE ausgeprägt und es sind die entsprechenden Auswirkungen zu beachten.

Hinweis

Bei der Angabe der Kardinalität in einem Pfadausdruck wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.

Beispiel

Pfadangaben mit expliziter Angabe der Kardinalität von CDS-Assoziationen in der SELECT-Liste. Auf einer Datenbank, die dies unterstützt, ist nur der links äußere Join zwischen den Datenbanktabellen SPFLI und SAIRPORT mit dem Zusatz MANY TO ONE ausgeprägt.

SELECT scarr~carrname,
       \_spfli[ (*) ]-connid AS connid,
       \_spfli[ (*) ]\_sflight[ (*) ]-fldate AS fldate,
       \_spfli[ (*) ]\_sairport[ (1) ]-name AS name
       FROM demo_cds_assoc_scarr AS scarr
       WHERE scarr~carrid = '...'
       ORDER BY carrname, connid, fldate
       INTO TABLE @DATA(result).

Zusatz 2

... INNER$|${LEFT$|RIGHT OUTER$}

Wirkung

Dieser Zusatz definiert die Art des Joins, in den die aktuelle Assoziation _assoc umgesetzt wird:

  • INNER bewirkt einen inneren Join
  • LEFT$|RIGHT OUTER bewirkt einen links bzw. rechts äußeren Join

Die Art des Join-Ausdrucks kann nur zusammen mit der Kardinalität angegeben werden.

Wenn die Art des Join-Ausdrucks nicht explizit angegeben ist, hängt sie von der Stelle ab, an welcher der Pfadausdruck verwendet wird:

  • In Spaltenangaben von SELECT-Anweisungen ist es ein links äußerer Join ( LEFT OUTER JOIN).

Hinweis

Bei der Angabe Art des Joins in einem Pfadausdruck wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.

Beispiel

Pfadangaben mit expliziter Angabe der Kardinalität und Umstellung der links äußeren Joins in den Spaltenangaben der SELECT-Liste auf innere Joins.

SELECT scarr~carrname,
       \_spfli[ (1) INNER ]-connid AS connid,
       \_spfli[ (1) INNER ]\_sflight[ (1) INNER ]-fldate AS fldate,
       \_spfli[ (1) INNER ]\_sairport[ (1) INNER ]-name AS name
       FROM demo_cds_assoc_scarr AS scarr
       WHERE scarr~carrid = 'LH'
       ORDER BY carrname, connid, fldate
       INTO TABLE @DATA(result).

Zusatz 3

...  $[WHERE$] sql_cond

Wirkung

Angabe einer Filterbedingung sql_cond für die aktuelle Assoziation _assoc. Der Zusatz WHERE ist optional wenn die Filterbedingung die einzige Angabe in den eckigen Klammern ist und er muss angegeben werden, wenn davor einer der anderen Zusätze verwendet wird.

Die Filterbedingung wird bei der Auflösung der Assoziation in einen Join in eine erweiterte Bedingung für den Join umgesetzt. Wenn im Pfadausdruck keine Filterbedingung angegeben ist, wird bei einer CDS-Assoziation implizit die mit WITH DEFAULT FILTER definierte Standardfilterbedingung verwendet.

Spaltenangaben in der Filterbedingung sql_cond beziehen sich immer auf das Ziele target bzw. target der Assoziation, für welche die Bedingung angegeben ist. Vor einer Spaltenangabe muss und darf kein expliziter Name mit dem Spaltenselektor ~ angegeben werden.

Hinweise

  • Bei der Angabe einer Filterbedingung in einem Pfadausdruck wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.

Beispiel

Angabe von Filterbedingungen in einem Pfadausdruck

SELECT carrid, connid, fldate, price
       FROM demo_cds_assoc_scarr
            \_spfli[   airpfrom = 'FRA' ]
            \_sflight[ currency  = 'EUR' AND
                       price  BETWEEN 500 AND 1500 ]
            AS flights
       ORDER BY carrid, connid, fldate, price
       INTO TABLE @DATA(result).






RFUMSV00 - Advance Return for Tax on Sales/Purchases   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 9984 Date: 20240523 Time: 110341     sap01-206 ( 119 ms )