Ansicht
Dokumentation

ABENOPEN_SQL_PATH - OPEN SQL PATH

ABENOPEN_SQL_PATH - OPEN SQL PATH

ROGBILLS - Synchronize billing plans   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- SQL-Pfadausdrücke sql_path

Syntax

... $[source~$]\_assoc1$[sql_para$]$[attributes$]
            $[\_assoc2$[ sql_para$]$[attributes$]$]
            $[\...$] ...

Wirkung

Angabe eines SQL-Pfadausdrucks. -Anweisungen können an bestimmten Operandenpositionen Pfadausdrücke enthalten, deren Wurzelelement eine wie folgt veröffentlichte CDS-Assoziation oder CTE-Assoziation sein muss:

In einem Pfadausdruck werden die Namen von Assoziationen _assoc1, _assoc2, ... durch Schrägstriche (\) getrennt angegeben. Hinter dem Wurzelelement angegebene Assoziationen müssen in der Zieldatenquelle der im Pfadausdruck jeweils direkt vorangehenden Assoziation veröffentlicht sein. Es dürfen keine CDS-Assoziationen vorkommen, die in einer abstrakten CDS-Entität definiert sind oder deren Zieldatenquelle eine abstrakte CDS-Entität ist.

Bei der Kompilation einer SELECT-Anweisung mit Pfadausdrücken, werden die durch diese repräsentierten Joins implizit in die FROM-Klausel der Anweisung eingefügt und die dadurch zusätzlichen Datenquellen werden implizit an den Verwendungsstellen der Pfadausdrücke ausgewertet. Dabei werden die Join-Bedingungen der Assoziationen und die sonstigen Bedingungen der beteiligten CDS-Entitäten bzw. allgemeinen Tabellenausdrücke berücksichtigt. Pfadausdrücke können verwendet werden:

  • In Spaltenangaben der SELECT-Anweisungen von Queries.
    Der Pfadausdruck repräsentiert standardmäßig einen links äußeren Join (LEFT OUTER JOIN).

In Spaltenangaben und bei der Veröffentlichung einer Assoziation kann vor dem Pfadausdruck optional die durch einen Spaltenselektor ~ abgetrennte Einheit source angegeben werden, von der dessen erste Assoziation veröffentlicht wird. Dies ist entweder eine CDS-View, eine CDS-Hierarchie oder ein allgemeiner Tabellenausdruck. Bei der Verwendung als Datenquelle folgt der Pfadausdruck dagegen ohnehin direkt auf die veröffentlichende Einheit.

Standardmäßig hat eine Assoziation die in der CDS-Entität bzw. dem allgemeinen Tabellenausdruck implizit oder explizit definierte Kardinalität. Es kommt zu Syntaxwarnungen oder Syntaxfehlern, wenn die Kardinalität nicht zur Verwendung des Pfadausdrucks in der SELECT-Anweisung passt. Wenn die Assoziation die Kardinalität "zu 1" hat, wird bei einem links äußeren Join (LEFT OUTER JOIN) auf Datenbanksystemen, die dies unterstützen, implizit der Zusatz MANY TO ONE hinzugefügt, und es sind die entsprechenden Auswirkungen zu beachten. Hinter einer Assoziation können:

  • mit sql_para Aktualparameter an die Eingabeparameter der Datenquelle einer CDS-Assoziation übergeben werden
  • mit attributes folgende Eigenschaften für den Abschnitt des Pfadausdrucks explizit angegeben werden:
  • Kardinalität der Assoziation

  • Art des Join-Ausdrucks

  • Filterbedingungen

Ein Pfadausdruck kann an folgenden Stellen über mehrere Quelltextzeilen umgebrochen werden:

  • vor einem Schrägstrich (\), aber nicht in der SELECT-Liste
  • an Leerzeichen in den runden Klammern von Parameterübergaben
  • an Leerzeichen in den eckigen Klammern für Attribute

Für die Assoziationen von Pfadausdrücken in bestehen gewisse Einschränkungen.

Hinweise

  • Bei der Ausprägung der Assoziationen der Pfadausdrücke als Joins wird versucht, sie auf so wenig wie möglich Join-Ausdrücke abzubilden. Assoziationen mit gleichen Parameterübergaben und semantisch gleichen Attributen führen in der Regel zu nur einem Join-Ausdruck.
  • Wenn in einer SELECT-Anweisung die Spaltenangaben verschiedener Klauseln auf Gleichheit überprüft werden, werden auch Parameterangaben und Attribute einbezogen. Dabei müssen an den gleichen Operandenpositionen auch die gleichen Hostvariablen verwendet werden.
  • Wenn in einem Pfadausdruck in einer Spaltenangabe Parameter übergeben werden oder Attribute angegeben sind, wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.

Beispiel

Einfache Pfadangabe für die CDS-Assoziation _spfli_scarr aus folgender CDS-View:

Das Programm DEMO_CDS_ASSOCIATION verwendet die folgende SELECT-Anweisung mit der einfachen Pfadangabe \_spfli_scarr für die View und vergleicht sie mit funktional gleichen Zugriffen auf dieselben Daten.

SELECT id,
       \_spfli_scarr[ (1) INNER ]-carrname AS carrier,
       flight,
       departure,
       destination
       FROM demo_cds_association
       INTO TABLE @DATA(result).

Eine SELECT-Anweisung, die auf die gesamte SELECT-Liste der View zugreift, und eine SELECT-Anweisung, die auf eine View mit einem gleichartigen Join zugreift, haben das gleiche Ergebnis.






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

Length: 12062 Date: 20240523 Time: 102152     sap01-206 ( 125 ms )