Common Set-Syntax:
INSERT
INTO
table-name
|
|
|
Extended Set-Syntax:
INSERT
INTO
table-name
|
|
( |
|
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen
Siehe auch INSERT - SQL im Teil Natural for Db2 in der Datenbankmanagementsystem-Schnittstellen-Dokumentation:
Das SQL-INSERT-Statement dient dazu, in einer Tabelle eine oder mehrere neue
Zeilen hinzuzufügen.
| Syntax-Element | Beschreibung |
|---|---|
INTO
table-name
|
INTO-Klausel:
In der Siehe weitere Informationen zu
|
column-list
|
Spaltenliste:
Syntax: column-name... Als Bei Angabe einer Wenn Sie bei |
include-columns |
Include Columns-Klausel:
Weitere Informationen siehe include-columns. |
VALUES-clause |
VALUES-Klausel:
Mit der Siehe VALUES-Klausel weiter unten. |
OVERRIDING USER VALUE
|
OVERRIDING USER VALUE-Klausel:
Diese Klausel gehört zum SQL Extended Set. Diese Klausel bewirkt, dass der Wert ignoriert wird, der in der
|
Mit der VALUES-Klausel fügen Sie eine einzelne Zeile in die Tabelle
ein. Der VALUES-Klausel kann entweder ein Stern (*) oder eine Spaltenliste
(column-list) vorangestellt werden, und sie
hat dementsprechend eine der folgenden Formen:
VALUES (VIEW
view-name)
|
Wenn Sie Stern-Notation benutzen, müssen Sie in der VALUES-Klausel einen
View angeben. Mit den Feldwerten des Views wird dann eine neue Zeile in die Tabelle
eingefügt, wobei die Feldnamen des Views als Spaltennamen der Zeile verwendet werden.
[(column-list)] [OVERRIDING USER
VALUE] VALUE-LIST |
Wenn Sie bei column-list eine Spaltenliste
angeben und in der VALUES-Klausel eine View referenzieren, muss die Anzahl
der Spalten in der Spaltenliste der Anzahl der Felder im View innerhalb der
VALUE-LIST entsprechen.
Wenn Sie keine Spaltenliste angeben, werden die im View angegebenen Werte entsprechend der impliziten Liste aller Spalten in der Reihenfolge, in der sie in der Tabelle stehen, eingefügt.
Common Set-Syntax:
|
|
VALUES |
|
|
[FOR-n-ROWS-clause] |
|
|||||||||
Extended Set-Syntax:
|
|
VALUES |
|
|
[FOR-n-ROWS-clause] |
|
|||||||||
[WITH_CTE
common-table-expression,...] select-expression |
|
WITH |
|
|
|
[QUERYNO
integer]
|
|
|||||||
Syntax-Element-Beschreibung:
| Syntax-Element | Beschreibung | |
|---|---|---|
VIEW
view-name |
View-Name:
Mit den Feldwerten dieses Views wird eine neue Zeile in die angegebene Tabelle eingefügt, wobei die Feldnamen des Views als Spaltennamen der Zeile benutzt werden. |
|
insert-item-list |
INSERT Single Row- oder Multiple Row-Klausel:
In der Wenn keine Die in der Informationen zu Wenn der Wert Beispiel für INSERT Single Row: ...
INSERT INTO SQL-PERSONNEL (NAME,AGE)
VALUES ('ADKINSON',35)
...
Beispiel für INSERT Multiple Row: ...
INSERT INTO SQL-PERSONNEL (NAME,AGE)
VALUES (‘ADKINSON’,35),
(‘ANDERSON’,’45),
(‘MILLER’,34),
(‘SIMONE’,56),
(‘BECKER’,27)
...
|
|
FOR-n-ROWS-clause |
FOR n Rows-Klausel:
Optionale Klausel, siehe FOR-n-ROWS-Klausel weiter unten. |
|
WITH_CTE
common-table-expression |
WITH_CTE-Klausel:
Diese Klausel gehört zum SQL Extended Set. Diese optionale Klausel ermöglicht die Definition einer Ergebnistabelle, die in
einer Weitere Informationen siehe WITH_CTE common-table-expression beim
|
|
select-expression
|
INSERT Multiple Rows-Klausel:
Diese Klausel gehört zum SQL Extended Set. Mit einem Weitere Informationen siehe Select-Ausdrücke. Beispiel für Insert Multiple Rows: ... INSERT INTO SQL-RETIREE (NAME,AGE,SEX) SELECT LASTNAME, AGE, SEX FROM SQL-EMPLOYEES WHERE AGE > 60 ... Anmerkung |
|
WITH RR/RS/CS
|
WITH Isolation Level-Klausel:
Diese Klausel gehört zum SQL Extended Set. Diese Klausel ermöglicht die explizite Angabe des zum Auffinden der einzufügenden Zeilen benutzten Isolationsstufe. |
|
CS |
Cursor Stability | |
RR |
Repeatable Read | |
RS |
Read Stability | |
QUERYNO_integer
|
QUERYNO-Klausel:
Diese Klausel gehört zum SQL Extended Set. Diese Klausel gibt explizit die bei der |
|
FOR |
|
[:]_host-variable |
|
ROWS |
[atomic-clause] | ||||
Diese Klausel setzt sich aus den folgenden Subklauseln zusammen:
FOR |
|
[:]_host-variable |
|
ROWS |
Die Angabe dieser Klausel ist optional. Sie sollte nur angegeben werden, wenn
die Compiler-Option DB2ARRY angegeben wird und
mehrere Zeilen aus Arrays eingefügt werden sollen, die in der insert-item-list der
VALUES-Klausel angegeben worden sind.
Wenn sie angegeben wird, legt die Option [:]
hostvariable/integer die Anzahl der Zeilen fest, die
in die Db2-Tabelle eingefügt werden sollen, und zwar von den Arrays, die in der
insert-item-list der
VALUES-Klausel ab der ersten Ausprägung angegeben wurden.
Diese Klausel soll die Verarbeitungszeit der Programme verbessern, mittels derer Zeilen aus Natural-Arrays in einer Schleife eingefügt werden. Anhand dieser Klausel können die in den Arrays enthaltenen Zeilen von einem SQL-Statement eingefügt werden.
Siehe Beispiel weiter unten.
Siehe auch den Teil Natural for Db2 in der Datenbankmanagementsystem-Schnittstellen-Dokumentation.
|
|
|
|||
Diese Klausel gibt an, ob die Einfügung mehrerer Zeilen von Db2 als
ATOMIC-Operation behandelt werden soll oder nicht.
Sie sollte nur angegeben werden, wenn
die Compiler-Option DB2ARRY angegeben wird und
mehrere Zeilen aus Arrays eingefügt werden sollen, die in der insert-item-list der
VALUES-Klausel angegeben worden sind.
Syntax-Element-Beschreibung:
Die in solchen Fällen zurückgegebenen sqlcodes entnehmen sie der Db2 SQL REFERENCE-Dokumentation.
DEFINE DATA LOCAL
01 NAME (A20/1:10) INIT <'ZILLER1','ZILLER2','ZILLER3','ZILLER4'
,'ZILLER5','ZILLER6','ZILLER7','ZILLER8'
,'ZILLER9','ZILLERA'>
01 ADDRESS (A100/1:10) INIT <'ANGEL STREET 1','ANGEL STREET 2'
,'ANGEL STREET 3','ANGEL STREET 4'
,'ANGEL STREET 5','ANGEL STREET 6'
,'ANGEL STREET 7','ANGEL STREET 8'
,'ANGEL STREET 9','ANGEL STREET 10'>
01 DATENATD (D/1:10) INIT <D'1954-03-27',D'1954-03-27',D'1954-03-27'
,D'1954-03-27',D'1954-03-27',D'1954-03-27'
,D'1954-03-27',D'1954-03-27',D'1954-03-27'
,D'1954-03-27'>
01 SALARY (P4.2/1:10) INIT <1000,2000,3000,4000,5000
,6000,7000,8000,9000,9999>
01 L§ADDRESS (I2/1:10) INIT <14,14,14,14,14,14,14,14,14,15>
01 N§ADDRESS (I2/1:10) INIT <00,00,00,00,00,00,00,00,00,00>
01 ROWS (I4)
01 INDEX (I4)
01 V1 VIEW OF NAT-DEMO_ID
02 NAME
02 ADDRESS (EM=X(20))
02 DATEOFBIRTH
02 SALARY
01 ROWCOUNT (I4)
END-DEFINE
OPTIONS DB2ARRY=ON /* <-- ENABLE DB2 ARRAY
ROWCOUNT := 10
INSERT INTO NAT-DEMO_ID
(NAME,ADDRESS,DATEOFBIRTH,SALARY)
VALUES
(:NAME(*), /* <-- ARRAY
:ADDRESS(*) /* <-- ARRAY
INDICATOR :N§ADDRESS(*) /* <-- ARRAY
LINDICATOR :L§ADDRESS(*), /* <-- ARRAY DB2 VCHAR
:DATENATD(1:10), /* <-- ARRAY NATURAL DATES
:SALARY(01:10) /* <-- ARRAY NATURAL PACKED
)
FOR :ROWCOUNT ROWS
SELECT * INTO VIEW V1 FROM NAT-DEMO_ID WHERE NAME > 'Z'
DISPLAY V1 /* <-- VERIFY INSERT
END-SELECT
END