ABAP - Schlüsselwortdokumentation →  ABAP - Releaseabhängige Änderungen →  Änderungen zu Release 7.40 und seinen SPs →  Änderungen zu Release 7.40, SP05 → 

Open SQL zu Release 7.40, SP05


1. Kommaseparierte Listen


2. Fluchtsymbol für Hostvariablen


3. SQL-Ausdrücke


4. Umschalten der automatischen Mandantenbehandlung


5. Regeländerungen für Joins


6. Auswertung von INTO CORRESPONDING


7. Zugriff auf CDS-Entitäten


8. Strikter Modus der Syntaxprüfung


9. Strengere Überprüfung von Syntaxregeln


10. Angabe dynamischer Tokens



Änderung 1

Kommaseparierte Listen

Alle Auflistungen von Operanden in Open SQL können und sollten ab Release 7.40, SP05 als kommaseparierte Listen angegeben werden. Bislang war eine kommaseparierte Liste nur bei der Angabe einzelner Zielfelder in den runden Klammern hinter INTO bei SELECT und bei der Angabe von Datenobjekten in runden Klammern hinter WHERE möglich. In Unicode-Programmen, in denen die Programmeigenschaft Festpunktarithmetik eingeschaltet ist, sind kommaseparierte Liste jetzt auch möglich:

Die Angabe von leerzeichenseparierten Listen wird dadurch obsolet. Wenn eine dieser Listen durch Kommata getrennt ist, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.

Die Einschränkung, dass bei den kommaseparierten Listen hinter INTO und IN hinter der öffnenden Klammer kein Leerzeichen stehen darf, wenn mindestens ein Komma vorkommt, d.h. mehr als ein Datenobjekt angegeben ist, besteht ab SP05 nicht mehr.



Änderung 2

Fluchtsymbol für Hostvariablen

ABAP-Datenobjekte, die in Open-SQL-Anweisungen verwendet werden (in der Regel Variablen), werden jetzt wie im statisch eingebetteten Native SQL als Hostvariablen aufgefasst. Hostvariablen können und sollen ab Release 7.40, SP05 mit dem Fluchtsymbol @ gekennzeichnet werden. Die Angabe von Hostvariablen ohne Fluchtsymbol wird dadurch obsolet. Wenn das Fluchtsymbol vor einem Bezeichner einer Open-SQL-Anweisung verwendet wird, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.

Das Fluchtsymbol ist nur in Unicode-Programmen möglich, in denen die Programmeigenschaft Festpunktarithmetik eingeschaltet ist. Die Verwendung des Fluchtsymbols bedingt eine strengere Syntaxprüfung der gesamten Anweisung, bei der Fehler, die ansonsten nur als Syntaxwarnung erscheinen, als Syntaxfehler gemeldet werden.



Änderung 3

SQL-Ausdrücke

Ab Release 7.40, SP05 können SQL-Ausdrücke in einer kommaseparierten SELECT-Liste angegeben werden. Das Ergebnis eines solchen Ausdrucks, dessen Operanden die Namen von Spalten oder Hostvariablen sein können, wird vom Datenbanksystem bestimmt und in der entsprechende Spalte der Ergebnismenge an den Applikationsserver übergeben.

Die Verwendung von SQL-Ausdrücken ist nur in Unicode-Programmen möglich, in denen die Programmeigenschaft Festpunktarithmetik eingeschaltet ist. Die Verwendung von SQL-Ausdrücken bedingt, dass die Syntaxprüfung in einem strikten Modus ausgeführt wird, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.



Änderung 4

Umschalten der automatischen Mandantenbehandlung

Der neue Zusatz USING CLIENT clnt, der in allen Anweisungen von Open SQL alternativ zu CLIENT SPECIFIED angegeben werden kann, stellt die automatische Mandantenbehandlung auf den in clnt angegebenen Mandanten um.

Wenn der Zusatz USING CLIENT verwendet wird, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.



Änderung 5

Regeländerungen für Joins

Folgende bisherigen Einschränkungen für Joins wurden aufgehoben:

In einer SELECT-Anweisung, die obige Regeländerungen ausnutzt, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.



Änderung 6

Auswertung von INTO CORRESPONDING

Wenn alle benötigten Komponenten statisch erkennbar sind, wird die Zuordnung der Felder beim Zusatz CORRESPONDING hinter INTO jetzt bereits bei der Programmgenerierung und nicht erst zur Laufzeit bestimmt.

Der Zusatz INTO CORRESPONDING beeinflusst jetzt auch die SELECT-Liste, die tatsächlich an die Datenbank übergeben wird, und damit die Ergebnismenge der SELECT-Anweisung. Wenn es mindestens eine Namensübereinstimmung gibt, werden alle Spalten, für die es keine Namensübereinstimmung gibt, implizit aus der SELECT-Liste entfernt. Wenn es keine Namensübereinstimmung gibt, werden keine Spalten aus der Ergebnismenge entfernt. Bei der Angabe von * für die SELECT-Liste kann dies zu impliziten Umsetzung in eine Liste von Spalten führen.



Änderung 7

Zugriff auf CDS-Entitäten

Mit SELECT kann auf CDS-Entitäten zugegriffen werden. Mögliche CDS-Entitäten sind derzeit CDS-Views, die mit der DDL der ABAP CDS über DEFINE VIEW definiert werden.

Bei mandantenabhängigen CDS-Views wird eine automatische Mandantenbehandlung durchgeführt. Wenn diese mit dem Zusatz CLIENT SPECIFIED abgeschaltet wird, ist die Mandantenspalte Teil der Ergebnismenge, obwohl sie kein Element der CDS-View ist. Mit dem neuen Zusatz CLIENT SPECIFIED der Anweisung TYPES kann hierfür ein geeigneter Zielbereich deklariert werden. Neue Zusätze zu CLIENT SPECIFIED hinter FROM erlauben es, die Spalte in der SELECT-Anweisung anzusprechen.

Wenn für den Zugriff wie empfohlen der Name der CDS-Entität und nicht der Name der CDS-Datenbank-View verwendet wird, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.



Änderung 8

Strikter Modus der Syntaxprüfung

Wenn eine der obigen Neuerungen in einer Open-SQL-Anweisung verwendet wird, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.



Änderung 9

Strengere Überprüfung von Syntaxregeln

Zu Release 7.40, SP02 wurde ein neuer SQL-Parser für Open SQL eingeführt. Dieser Parser überprüft einige Regeln strenger als der alte Parser. Insbesondere wird jetzt auch der gleiche Parser für statisch angegebenes Open SQL und für den Inhalt dynamischer Tokens verwendet. Dieser Parser wurde zu Release 7.40, SP02 vorerst nur für die Anweisung SELECT eingesetzt. Ab Release 7.40, SP05 wird der neue Parser für alle Open-SQL-Anweisungen eingesetzt. Als Konsequenz daraus führen jetzt folgende Syntaxkonstrukte, die schon immer fehlerhaft waren, zu Syntax- oder Laufzeitfehlern:

Alle Korrekturen zu Release 7.40, SP02, welche die WHERE-Bedingung betreffen, gelten ab Release 7.40, SP05 nun auch für die Anweisungen DELETE, OPEN CURSOR und UPDATE.

Beispiel

Ab Release 7.40, SP05 Syntaxfehler für:

DELETE FROM spfli WHERE NOT NOT carrid = 'LH'.
Alle Korrekturen zu Release 7.40, SP02, welche dynamische Tokens betreffen, gelten ab Release 7.40, SP05 für alle Open-SQL-Anweisungen, die dynamische Tokens unterstützen.

Beispiel

Ab Release 7.40, SP05 Ausnahme für:

DELETE FROM (`SPFLI .`) WHERE (`. CARRID = 'LH'`).
Der Zusatz WITH HOLD der Anweisung OPEN CURSOR darf nur bei Zugriffen auf die Standarddatenbank verwendet werden. Wenn gleichzeitig der Zusatz CONNECTION angegeben ist, kam es vor Release 7.40, SP05 nicht zu einem Syntax-, aber einem Laufzeitfehler, wenn die Datenbanktabelle dynamisch angegeben war. Diese Lücke wurde zu Release 7.40, SP05 geschlossen.

Beispiel

Ab Release 7.40, SP05 Syntaxfehler für:

OPEN CURSOR WITH HOLD cursor
     FOR SELECT *
                FROM ('SPFLI') CONNECTION con.




Änderung 10

Angabe dynamischer Tokens

Ab Release 7.40, SP05 können als dynamische Tokens angegebene interne Tabellen auch in ändernden Open-SQL-Anweisungen Sekundärschlüssel haben.