Natural for DB2 Version 8.4 - Aktualisierte Dokumentation

Anmerkung:
Die hier zur Verfügung gestellten Dokumentations-Updates umfassen nur die Änderungen, die Natural for DB2 Version 8.4 und höher betreffen.

Die meisten Änderungen wurden in den SQL-Statements von Natural for DB2 Version 8.4.1 zur Unterstützung von IBM Db2 Version 12 implementiert.

Informationen zu den Änderungen bei der Installation finden Sie unter Installing Natural for Db2 Version 8.4.3 in der Natural Installation-Dokumentation.


Natural-Statements und Systemvariablen benutzen unter Natural for Db2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus dem Kapitel Natural-Statements und Systemvariablen benutzen und beschreibt nur die Änderungen, die speziell für Natural for Db2 Version 8.4 gelten.

UPDATE mit FIND/READ

Wenn ein Natural-Programm ein DML UPDATE-Statement enthält, wird dieses Statement in ein SQL UPDATE-Statement übersetzt und eine FOR UPDATE OF-Klausel wird dem SELECT-Statement hinzugefügt.

Beachten Sie, dass ein Primärschlüsselfeld nicht Teil einer FOR UPDATE OF-Liste ist, es sei denn, die Compileroption DB2PKYU ist auf ON gesetzt. Wenn DB2PKYU auf OFF gesetzt ist (Voreinstellung), kann ein Primärschlüsselfeld nur durch eine Nicht-Cursor-UPDATE-Operation aktualisiert werden (siehe auch Natural-SQL UPDATE- Statement im Abschnitt Verwendung von Natural-SQL-Statements).

scalar-function

Eine Skalarfunktion ist eine eingebaute Funktion, die bei der Konstruktion von skalaren Berechnungsausdrücken verwendet werden kann. Skalarfunktionen sind spezifisch für Db2 und gehören zum Natural SQL Extended Set.

Die Skalarfunktionen, die Natural for Db2 unterstützt, sind im Folgenden in alphabetischer Reihenfolge aufgeführt:

A - H I - R S - Z

ABS
ABSVAL
ACOS
ADD_MONTHS
ASIN
ASCII
ASCII_CHR
ASCII_STR
ATAN
ATAN2
ATANH
BIGINT
BINARY
BITAND
BITANDNOT
BITNOT
BITOR
BITXOR
BLOB
CCSID_ENCODING
CEIL
CEILING
CHAR
CHARACTER_LENGTH
CLOB
COALESCE
COLLATION_KEY
COMPARE_DECFLOAT
CONCAT
CONTAINS
COS
COSH
DATE
DAY
DAYOFMONTH
DAYOFWEEK
DAYOFWEEK_ISO
DAYOFYEAR
DAYS
DBCLOB
DEC
DECFLOAT
DEDCFLOAT_FORMAT
DECFLOAT_SORTKEY
DECIMAL
DECODE
DECRYPT_BIT
DECRYPT_CHAR
DECRYPT_DB
DEGREES
DIFFERENCE
DIGITS
DOUBLE
DOUBLE_PRECISION
DSN_XMLVALIDATE
EBCDIC_CHR
EBCDIC_STR
ENCRYPT_TDES
ENCRYPT
EXP
EXTRACT
FLOAT
FLOOR
GRAPHIC
GENERATE_UNIQUE
GENERATE_UNIQUE_BINARY
GETHINT
GETVARIABLE
HASH_CRC32
HASH_MD5
HASH_SHA1
HASH_SHA256
HEX
HOUR

IDENTITY_VAL_LOCAL
IFNULL
INSERT
INTEGER
JULIAN_DAY
LAST_DAY
LCASE
LEFT
LENGTH
LN
LOCATE
LOCATE_IN_STRING
LOG
LOG10
LOWER
LPAD
LTRIM
MAX
MICROSECOND
MIDNIGHT_SECONDS
MIN
MINUTE
MOD
MONTH
MONTHS_BETWEEN
MQPUBLISH
MQPUBLISHXML
MQREAD
MQREADCLOB
MQREADXML
MQRECEIVE
MQRECEIVECLOB
MQRECEIVEXML
MQSEND
MQSENDXML
MQSENDXMLFILE
MQSENDXMLFILECLOB
MQSUBSCRIBE
MQUNSUBSCRIBE
MULTIPLY_ALT
NEXT_DAY
NORMALIZE_DECFLOAT
NORMALIZE_STRING
NULLIF
NVL
OVERLAY
PACK
POSSTR
POWER
QUANTIZE
QUARTER
RADIANS
RAISE_ERROR
RAND
REAL
REPEAT
REPLACE
RID
RIGHT
ROUND
ROUND_TIMESTAMP
ROWID
RPAD
RTRIM

SCORE
SECOND
SIGN
SIN
SINH
SMALLINT
SOAPHTTPC
SOAPHTTPV
SOAPHTTPNC
SOAPHTTPNV
SOUNDEX
SPACE
SQRT
STRIP
SUBSTR
SUBSTRING
TAN
TANH
TIME
TIMESTAMP
TIMESTAMPADD
TIMESTAMPDIFF
TIMESTAMP_FORMAT
TIMESTAMP_ISO
TIMESTAMP_TZ
TO_CHAR
TO_DATE
TO_NUMBER
TOTALORDER
TRANSLATE
TRIM
TRUNC
TRUNC_TIMESTAMP
TRUNCATE
UCASE
UNICODE
UNICODE_STR
UNISTR
UNPACK
UPPER
VALUE
VARBINARY
VARCHAR
VARCHAR9
VARCHAR_BIT_FORMAT
VARCHAR_FORMAT
VARGRAPHIC
WEEK
WEEK_ISO
XMLATTRIBUTES
XMLCONCAT
XMLCOMMENT
XMLDOCUMENT
XMLELEMENT
XMLFOREST
XMLMODIFY
XMLNAMESPACES
XMLPARSE
XMLPI
XMLQUERY
XMLSERIALIZE
XMLTEXT
XMLXSROBJECTID
YEAR

Auf jede Skalarfunktion folgen ein oder mehrere skalare Ausdrücke in Klammern. Die Anzahl der Skalarausdrücke hängt von der Skalarfunktion ab. Mehrere skalare Ausdrücke müssen durch Kommata voneinander getrennt werden.

Beispiel:

SELECT NAME
  INTO NAME
  FROM SQL-PERSONNEL
  WHERE SUBSTR ( NAME, 1, 3 ) = 'Fri'
       ...

column-function

Die folgenden Spaltenfunktionen entsprechen nicht dem Standard-SQL. Sie sind spezifisch für DB2 und gehören zum Natural SQL Extended Set.

COUNT_BIG
CORRELATION
COVARIANCE
COVARIANCE_SAMP
MEDIAN
PERCENTILE_CONT
PERCENTILE_DISC
STDDEV
STDDEV_POP
STDDEV_SAMP
VAR
VAR_POP
VAR_SAMP
VARIANCE
VARIANCE_SAMP
XMLAGG

special-register

Mit Ausnahme von USER entsprechen die folgenden speziellen Register nicht dem Standard-SQL. Sie sind spezifisch für DB2 und gehören zum Natural SQL Extended Set:

CURRENT APPLICATION COMPATIBILITY
CURRENT APPLICATION ENCODING SCHEME
CURRENT CLIENT_ACCNTG
CURRENT CLIENT_APPLNAME
CURRENT CLIENT_CORR_TOKEN
CURRENT CLIENT_USERID
CURRENT CLIENT_WRKSTNNAME
CURRENT DATE
CURRENT_DATE
CURRENT DEBUG MODE
CURRENT DECFLOAT ROUNDING MODE
CURRENT DEGREE
CURRENT FUNCTION PATH
CURRENT GET_ACCEL_ARCHIVE
CURRENT_LC_CTYPE
CURRENT LC_CTYPE
CURRENT LOCALE LC_CTYPE
CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION
CURRENT_MEMBER
CURRENT OPTIMIZATION HINT
CURRENT PACKAGE PATH
CURRENT PACKAGESET
CURRENT_PATH
CURRENT PRECISION
CURRENT QUERY ACCELERATION
CURRENT REFRESH AGE
CURRENT ROUTINE VERSION
CURRENT RULES
CURRENT SCHEMA
CURRENT SERVER
CURRENT SQLID
CURRENT TEMPORAL BUSINESS_TIME
CURRENT TEMPORAL_SYSTEM_TIME
CURRENT TIME
CURRENT_TIME
CURRENT TIMESTAMP
CURRENT TIMEZONE
CURRENT_TIMEZONE USER
SESSION TIME ZONE
SESSION_USER
USER

Ein Referenz auf ein spezielles Register gibt einen skalaren Wert zurück.

Mit dem Kommando SET CURRENT SQLID kann der Erzeugername (Creator Name) einer Tabelle durch die aktuelle SQLID ersetzt werden. Dies ermöglicht den Zugriff auf identische Tabellen mit demselben Tabellennamen, aber mit unterschiedlichen Erzeugernamen.

Select Expressions unter Natural for Db2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus dem Kapitel SELECT-Ausdrücke (Statements-Dokumentation) und beschreibt nur die spezifischen Änderungen für Natural for Db2 Version 8.4.

Selection

ALL
DISTINCT

../graphics/cbo3b.gif

scalar-expression [[AS] correlation-name]
unpack-row

, ../graphics/dot3.gif

../graphics/cbc3b.gif

  *  

A selection specifies the columns of the result set tables to be selected.

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
ALL | DISTINCT
Eliminierung doppelt vorkommender Zeilen:

Doppelt vorkommende Zeilen werden nicht automatisch aus dem Ergebnis eines select-expression entfernt. Wenn Sie dies wünschen, müssen Sie das Schlüsselwort DISTINCT angeben.

Die Alternative zu DISTINCT ist ALL. Wenn Sie nichts angeben, gilt ALL.

scalar-expression
Skalar-Ausdruck:

Anstelle eines einfachen Spaltennamen können Sie auch allgemeine scalar-expressions angeben, die Skalar-Operatoren und Skalar-Funktionen enthalten, die berechnete Werte liefern. Siehe Skalar-Ausdrücke.

Beispiel:

SELECT NAME, 65 - AGE 
  FROM SQL-PERSONNEL 
  ...
AS Das optionale Schlüsselwort AS steht zu Beginn eines correlation-name für eine Spalte.
correlation-name
Korrelationsname:

Es besteht die Möglichkeit, einem scalar-expression einen correlation-name als Alias-Namen für eine Ergebnisspalte zuzuweisen.

Der correlation-name braucht nicht eindeutig sein. Wenn für eine Ergebnisspalte kein correlation-name angegeben wird, wird der betreffende column-name genommen (falls sich die Ergebnisspalte von einem Spaltennamen ableitet; andernfalls hat die Ergebnisspalte keinen Namen). Der Name einer Ergebnisspalte kann beispielsweise als Spaltenname in der ORDER BY-Klausel eines SELECT-Statements angegeben werden.

unpack-row Siehe unpack-row weiter unten.
*
Stern-Notation (*) :

Alle Spalten der Ergebnistabelle werden ausgewählt.

Beispiel:

SELECT * 
  FROM SQL-PERSONNEL, SQL-AUTOMOBILES 
  ...

unpack-row

UNPACK (scalar-expression) .* AS ({field-name data-type} , ../graphics/dot3.gif)

Mit unpack-row geben Sie eine Spalte nicht entpackter Binärwerte an, die zurückgegeben werden, wenn die SQL UNPACK-Funktion aufgerufen wird. Die Anzahl der Feldnamen (field-names) und Datentypen (data-types) muss mit der Anzahl der von der SQL UNPACK-Funktion zurückgegeben Felder übereinstimmen.

GROUP BY-Klausel

../graphics/sbo3b.gif

GROUP BY

../graphics/cbo3.gif

grouping-expression
grouping-set
super-group

../graphics/cbc3.gif

, ../graphics/dot3.gif

../graphics/sbc3b.gif

Die GROUP BY-Klausel gibt eine Gruppierung der Ergebnistabelle an. Es ergibt sich eine Menge von Gruppen mit Zeilen. Innerhalb einer Gruppe mit mehr als einer Zeile sind alle Werte, die die Gruppe definieren, gleich.

grouping-expression

Ein grouping-expression ist ein scalar-expression, der die Gruppierung eines result-set definiert.

grouping-set

GROUPING SETS (

../graphics/cbo5.gif

 

../graphics/cbo2.gif

grouping-expression
super-group

../graphics/cbc2.gif

   

../graphics/cbc5.gif

, ../graphics/dot3.gif )
(

../graphics/cbo2.gif

grouping-expression
super-group

../graphics/cbc2.gif

, ../graphics/dot3.gif )

Ein grouping-set wird verwendet, um mehrere Gruppierungsklauseln in einem einzigen Statement anzugeben. Ein grouping-set kombiniert zwei oder mehr Zeilengruppen zu einem einzigen Resultset (Ergebnismenge). Es ist das gleiche wie eine UNION-Verkettung mehrerer select-expressions mit einer GROUP BY-Klausel, wobei jeder Ausdruck einem grouping-set entspricht. Ein grouping-set ist ein einzelnes Element oder eine Liste mit Elementen, die durch Klammern voneinander abgegrenzt sind. Ein Element ist entweder ein grouping–expression oder eine super-group. Ein grouping-set hat den Vorteil, dass die Gruppen in einem einzigen Durchgang über die Basistabelle berechnet werden.

super-group

../graphics/cbo3.gif

ROLLUP
CUBE

(grouping-expression-list)
(grouping-expression-list

../graphics/cbc3.gif

  ( )

Eine super-group ist eine komplexerer grouping-set.

Eine grouping-expression-list definiert die Anzahl der Elemente, die in einer ROLLUP- oder CUBE-Operation verwendet werden. Elemente mit mehreren grouping-expressions werden durch Klammern voneinander abgegerenzt.

../graphics/cbo2.gif

grouping-expression

../graphics/cbc2.gif

, ../graphics/dot3.gif
(grouping-expression, ../graphics/dot3.gif)

Gesamtresultat "grand total" ( ):

ROLLUP und CUBE liefern eine Zeile, die die Gesamtaggregation (Gesamtresultat) ist. Dies kann durch leere Klammern ( ) in der GROUPING SETS-Klausel angegeben werden.

ROLLUP

Eine ROLLUP-Gruppierung ist wie eine Reihe von grouping-sets. Zusätzlich zu den regulären gruppierten Zeilen erzeugt eine ROLLUP-Gruppierung einen Resultset (Ergebnismenge), die Zwischensummenzeilen enthält. Zwischensummenzeilen sind "super-aggregierte" Zeilen, die zusätzliche Gesamtsummen enthalten. Die aggregierten Werte werden mit denselben Spaltenfunktionen abgerufen, die zum Abrufen der regulären gruppierten Zeilen verwendet werden.

Generell geben Sie eine ROLLUP-Gruppierung mit n Elementen wie folgt an:

GROUP BY ROLLUP (c1, c2, ..., cn-1, cn)

Was folgender Angabe entspricht:

GROUP BY GROUPING SETS ((c1, c2, ..., cn-1, cn),

                       (c1, c2, ..., cn-1),

                       ...

                       (c1, c2),

                       (c1),

                       ( ))
CUBE

Eine CUBE-Gruppierung ist wie eine Reihe von grouping-sets. Zusätzlich zu den ROLLUP-Aggregationszeilen erzeugt CUBE einen Resultset (Ergebnismenge), die Kreuztabellierungszeilen enthält. Kreuztabellierungszeilen sind zusätzliche "super-aggregierte" Zeilen. Die grouping-expression-list eines CUBE berechnet zusammen mit dem Gesamtresultat "grand total" alle Permutationen. Als Ergebnis werden die n Elemente eines CUBE in 2**n grouping-sets umgesetzt. Zum Beispiel:

GROUP BY CUBE (a, b, c)

Was folgender Angabe entspricht:

GROUP BY GROUPING SETS ((a, b, c),

                       (a, b),

                       (a, c),

                       (b, c),

                       (a),

                       (b),

                       (c),

                       ())

Dynamische und statische SQL-Unterstützung unter Natural for DB2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus dem Kapitel Dynamische und statische SQL-Unterstützung (Statements-Dokumentation) und beschreibt nur die spezifischen Änderungen für Natural for Db2 Version 8.4.

Planumschaltung durch CICS/DB2 Exit Routine

Wenn #SWITCH-BY-TRANSACTION-ID auf FALSE gesetzt ist, wird der gewünschte Plan-Name in eine temporäre Speicherwarteschlange für eine CICS/Db2-Exit-Routine geschrieben, die als PLANExit-Attribut eines DB2ENTRY oder der DB2CONN-Definition angegeben ist. Das NATPLAN-Programm muss vor dem ersten Db2-Zugriff aufgerufen werden. Natural for Db2 bietet NDBUEXT als CICS-Db2-Planauswahl-Exit-Programm. Weitere Informationen zu CICS/Db2-Exit-Routinen finden Sie in der entsprechenden IBM-Literatur.

Der Name der temporären Speicherwarteschlange lautet PLANxxxx, wobei ssss die Kennung des entfernten oder lokalen CICS-Systems und tttt die CICS-Terminalkennung ist.

In einer CICSplex-Umgebung muss die CICS-Warteschlange PLANxxxx, die den Namen des Plans enthält, mit TYPE=SHARED oder TYPE=REMOTE in einem CICS-TST definiert werden.

Für jede neue Db2-Wiederherstellungseinheit wird automatisch die entsprechende Planauswahl-Exit-Routine aufgerufen. Diese Exit-Routine liest den temporären Speichersatz und verwendet den darin enthaltenen Plan-Namen für die Planauswahl.

Wenn für die Natural-Sitzung kein temporärer Speichersatz existiert, kann ein im Plan-Exit enthaltener Standard-Plan-Name verwendet werden. Wenn durch den Exit kein Plan-Name angegeben ist, wird der Name des Plans verwendet, der dem Namen des statischen Programms (DBRM) entspricht, das den SQL-Aufruf absetzt. Wenn kein solcher Plan-Name existiert, kommt es zu einem SQL-Fehler.

SELECT under Natural for DB2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus Syntax 1 - Extended Set und Syntax-Element-Beschreibung im Abschnitt SELECT (SQL) (Statements-Dokumentation) und beschreibt nur die spezifischen Änderungen für Natural for Db2 Version 8.4.

Syntax 1 - Extended Set

[WITH_CTE common-table-expression, ../graphics/dot3.gif]
SELECT selection into-clause table-expression

UNION
EXCEPT
INTERSECT

../graphics/sbo1.gif

DISTINCT
ALL

../graphics/sbc1.gif

../graphics/sbo1.gif

(SELECT selection table-expression)
SELECT selection table-expression

../graphics/sbc1.gif

 
 

../graphics/dot3.gif

[ORDER BY criteria]

OPTIMIZE FOR integer

ROW
ROWS

     
[WITH isolation-level]
[SKIP LOCKED DATA]
[QUERYNO integer]
[OFFSET row-count]
[FETCH FIRST row-limit]
[WITH HOLD]
[WITH RETURN]
[WITH scroll-mode]
[WITH ROWSET POSITIONING FOR max-rowsets]
[IF NO RECORDS FOUND instruction]
statement ../graphics/dot3.gif

END-SELECT
LOOP

   
OFFSET row-count
OFFSET [offset-row-count]

../graphics/cbo2.gif

ROW
ROWS

../graphics/cbc2.gif

Die OFFSET-Klausel gibt die Anzahl der Zeilen an, die in der Ergebnistabelle übersprungen werden sollen, bevor Zeilen von dort abgerufen werden. Eine begrenzte Anzahl von Zeilen am Ende einer Ergebnismenge kann die Leistung von Abfragen mit potenziell großen Ergebnismengen verbessern.

offset-row-count ist eine numerische Variable oder Konstante, die die Anzahl der zu überspringenden Zeilen bestimmt. Die Zahl muss Null (0) oder eine positive ganze Zahl sein.

FETCH FIRST row-limit
FETCH FIRST

../graphics/sbo2.gif

1
row-count

../graphics/sbc2.gif

../graphics/cbo2.gif

ROW
ROWS

../graphics/cbc2.gif

Die FETCH FIRST-Klausel begrenzt die Anzahl der abzurufenden Zeilen. Eine begrenzte Anzahl von Zeilen kann die Leistung von Abfragen mit potenziell großen Ergebnismengen verbessern.

row-count gibt eine numerische Variable oder Konstante an, die die Anzahl der abzurufenden Zeilen bestimmt. Die Zahl muss eine positive Ganzzahl sein.

MERGE unter Natural for DB2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus dem Kapitel MERGE ( SQL) (Statements-Dokumentation) und beschreibt nur die spezifischen Änderungen für Natural for Db2 Version 8.4.

MERGE INTO table-name [[AS] correlation-name]
  [include-columns] USING source-table
  ON search-condition
{WHEN matching-condition THEN modification-operation} ...
[ELSE IGNORE]
  [NOT ATOMIC CONTINUE ON SQLEXCEPTION]
  [QUERYNO integer]
Syntax-Element Beschreibung
MERGE INTO
MERGE INTO-Klausel:

MERGE INTO initiiert ein SQL MERGE-Statement, das eine Kombination aus einem SQL INSERT- und einem SQL Searched UPDATE-Statement ist.

table-name
Tabellenname:

Identifiziert das Ziel der INSERT- oder UPDATE-Operation des MERGE-Statement.

[AS] correlation-name
[AS] correlation-name-Klausel:

Gibt einen alternativen Namen für die Zieltabelle an. Der alternative Name kann als Qualifikationsmerkmal verwendet werden, wenn auf Spalten der Zwischenergebnistabelle verwiesen wird.

include-columns
Include Columns-Klausel:

Gibt einen Satz von Spalten an, die zusammen mit den Spalten der Zieltabelle in die Ergebnistabelle des MERGE-Statements aufgenommen werden, wenn es in der FROM-Klausel eines SELECT-Statements geschachtelt ist. Die eingeschlossenen Spalten werden am Ende der durch die Zieltabelle identifizierten Spaltenliste angehängt.

USING source-table
USING source-table-Klausel:

Gibt die Werte für die Zeilendaten an, die in der Zieltabelle zusammengeführt werden sollen.

ON search-condition
ON search-condition-Klausel:

Gibt Join-Bedingungen zwischen der Quelltabelle und der Zieltabelle an. Jeder Spaltenname in der Suchbedingung muss eine Spalte der Zieltabelle oder der Quelltabelle bezeichnen.

WHEN matching-condition
WHEN matching-condition-Klausel:

Gibt die Bedingung an, für die die in der folgenden THEN-Klausel definierte Änderungsoperation durchgeführt werden soll. Siehe matching-condition.

THEN modification-operation
THEN modification-operation-Klausel:

Gibt die Operation an, die bei den Übereinstimmungen mit der in der vorangehenden WHEN-Klausel definierten Bedingung durchgeführt werden soll. Siehe modification-operation.

ELSE IGNORE
ELSE IGNORE-Klausel:

Legt fest, dass bei Quellspalten, die die in der WHEN-Klausel angegebene Bedingung nicht erfüllen, keine Aktion durchgeführt wird.

NOT ATOMIC CONTINUE ON SQLEXCEPTION
NOT ATOMIC CONTINUE ON SQLEXCEPTION-Klausel:

Gibt an, ob die Zusammenführungsverarbeitung fortgesetzt wird, wenn bei der Verarbeitung einer Zeile eines Satzes von Quellzeilen ein Fehler auftritt.

QUERYNO integer
QUERYNO integer-Klausel:

Gibt die Nummer für dieses SQL-Statement an, die in der EXPLAIN-Ausgabe und den Db2-Trace-Aufzeichnungen verwendet wird.

matching-condition

[NOT] MATCHED [AND search-condition]
Syntax-Element Beschreibung
[NOT] MATCHED Gibt die modification-operation (Änderungsoperation) an, die durchgeführt werden soll, wenn eine ON search-condition-Suchbedingung als wahr oder nicht wahr ausgewertet wird (NOT kann optional angegeben werden).
AND search-condition Gibt eine (optionale) zusätzliche Bedingung an, die als wahr ausgewertet werden muss, bevor die modification-operation durchgeführt wird.

modification-operation

update-operation)
DELETE
signal-operation
insert-operation
Syntax-Element Beschreibung
update-operation Gibt an, dass die übereinstimmende Zielzeile mit den in der Zuweisungsklausel (UPDATE SET assignment-clause) zugewiesenen Werten geändert wird.

Eine UPDATE-Operation ist nur zulässig, wenn die Übereinstimmungsbedingung (matching-condition) als wahr ausgewertet wird.

DELETE Gibt an, dass die übereinstimmende Zielzeile gelöscht wird. Eine DELETE-Operation ist nur zulässig, wenn die Übereinstimmungsbedingung (matching-condition) als wahr ausgewertet wird.
signal-operation Gibt den SQL-Fehler an, der ausgelöst werden soll.

Eine SIGNAL-Operation ist nur zulässig, wenn die Übereinstimmungsbedingung (matching-condition) als wahr ausgewertet wird.

insert-operation Gibt die Zeilen an, die in die Zieltabelle eingefügt werden sollen.

Eine INSERT-Operation ist nur zulässig, wenn die Übereinstimmungsbedingung (matching-condition) als nicht wahr ausgewertet wird.

signal-operation

SIGNAL SQLSTATE [VALUE] sqlstate [SET MESSAGE_TEXT = scalar-expression]
Syntax-Element Beschreibung
SIGNAL Gibt die SIGNAL-Operation an, die ausgeführt werden soll, wenn die Übereinstimmungsbedingung (matching-condition) als wahr ausgewertet wird. Db2 setzt einen SQLCODE -438, wenn ein Fehler durch das SIGNAL-Statement angezeigt wird.
SQLSTATE [VALUE] sqlstate Gibt den SQLSTATE an, der von Db2 gesetzt werden soll.

sqlstate ist eine 5 Zeichen lange alphanumerische Konstante oder eine alphanumerische Variable. sqlstate-Werte werden SQLSTATE von Db2 zugewiesen. Empfohlene Werte finden Sie in der entsprechenden Db2-Dokumentation.

SET MESSAGE_TEXT= scalar-expression Diese optionale Klausel gibt eine Fehler- oder Warnmeldung an, die in das Feld SQLEERRMC der SQLCA gestellt wird oder die mit dem Statement GET DIAGNOSTICS abgerufen werden kann.

Beispiele - Beispiel 3:

Zusammenführung von Verkaufsdaten aus der Tabelle MSALES in die Tabelle MPRODUCT. Demonstration der MERGE-Operation mit den Statements DELETE, UPDATE, INSERT und SIGNAL.

DEFINE DATA                         
LOCAL USING DEMSQLCA                
LOCAL                               
1 V1 VIEW OF MPRODUCT           
2 ID                                
2 NAME                              
2 INVENTORY                         
1  #M_TEXT  (A10) INIT <'Oversold: '>
   END-DEFINE
...
MERGE INTO MPRODUCT AS T                                            
      USING (SELECT MSALES.ID        ,SUM(MSALES.SOLD) AS SOLD, 
                     MAX(MCATALOG.NAME) AS NAME                     
               FROM MSALES, MCATALOG                            
               WHERE MSALES.ID = MCATALOG.ID                    
               GROUP BY MSALES.ID) AS S                             
               (ID,SOLD,NAME)                                           
      ON S.ID = T.ID                                                    
      WHEN MATCHED AND T.INVENTORY = S.SOLD                             
                   THEN DELETE                                          
      WHEN MATCHED AND T.INVENTORY < S.SOLD                             
                   THEN SIGNAL SQLSTATE '78000'                         
                        SET MESSAGE_TEXT =:#M_TEXT     || S.NAME        
      WHEN MATCHED                                                      
                   THEN UPDATE SET T.INVENTORY = T.INVENTORY - S.SOLD   
      WHEN NOT MATCHED                                                  
                   THEN INSERT VALUES(S.ID, S.NAME, -S.SOLD)
END TRANSACTION   
END

Searched DELETE under Natural for DB2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus Syntax 1 - Searched DELETE im Kapitel DELETE (SQL) (Statements-Dokumentation) und beschreibt nur die spezifischen Änderungen für Natural for Db2 Version 8.4.

Syntax 1 - Extended Set

DELETE FROM table-name [period-clause] [correlation-name]
[include-columns [SET assignment-clause]]
[WHERE search-condition]
[FETCH FIRST row-limit

WITH

RR
RS
CS

[SKIP LOCKED DATA] [QUERYNO integer]

Die FETCH FIRST-Klausel begrenzt die Auswirkungen des DELETE-Statement auf eine Teilmenge der in Frage kommenden Zeilen. Entspricht der beim SELECT-Statement unter FETCH FIRST row-limit beschriebenen FETCH FIRST-Klausel zur Begrenzung der Zeilen.

Suchbedingungen unter Natural for DB2 Version 8.4

Anmerkung:
Dies ist ein Auszug aus dem Kapitel DELETE (SQL) (Statements-Dokumentation) und beschreibt nur die spezifischen Änderungen für Natural for Db2 Version 8.4.

comparison-predicate

scalar-expression comparison scalar-expression

row-value-expression comparison row-value-expression

Ein comparison-predicate vergleicht zwei Werte oder einen Satz Werte mit einem anderen Satz Werte.

Im obigen Syntax-Diagramm kann comparison einer der folgenden Operatoren sein:

= gleich
< kleiner als
> größer als
<= kleiner gleich
>= größer gleich
<>   ungleich