Ansicht
Dokumentation
ABENOPEN_SQL_PATH_FILTER - OPEN SQL PATH FILTER
BAL Application Log Documentation rdisp/max_wprun_time - Maximum work process run timeDiese Dokumentation steht unter dem Copyright der SAP AG.
- 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).
- Als Datenquelle der FROM-Klausel ist es einen innerer Join (INNER 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
- Die in einer Filterbedingung möglichen relationalen Ausdrücke sind eine Teilmenge der relationalen Ausdrücke für Anweisungen, ermöglichen aber auch SQL-Ausdrücke als Operanden der rechten Seite.
- 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 )