This document covers the following topics:
Belongs to Function Group: Database Access and Update
The SQL DELETE statement is used to delete either rows in a table without
using a cursor ("searched"
DELETE) or rows in a table to which a cursor is positioned
("positioned"
DELETE).
Two different structures are possible.
The "searched"
DELETE statement is a stand-alone statement not related to any SELECT statement. With a single statement
you can delete zero, one, multiple or all rows of a table. The rows to be deleted are
determined by a search-condition that is applied
to the table. Optionally, the table name can be assigned a
correlation-name.
Note
The number of rows that have actually been deleted with a "searched"
DELETE can be ascertained by using the system variable *ROWCOUNT; see
System Variables documentation.
Common Set Syntax:
DELETE
FROM
table-name [correlation-name] [WHERE
search-condition]
|
Extended Set Syntax:
DELETE
FROM
table-name [correlation-name]
|
|||||||
[WHERE
search-condition]
|
|||||||
|
|
WITH
|
|
|
|
[QUERYNO
integer]
|
||
For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.
Syntax Element Description:
| Syntax Element | Description | |
|---|---|---|
FROM
table-name
|
FROM Clause:
Specifies the table from which the rows are to be deleted. |
|
correlation-name
|
Correlation Name:
Optional. The table name can be assigned a correlation-name. |
|
WHERE
search-condition
|
WHERE Clause:
Specifies the selection criteria for the rows to be deleted. If no |
|
WITH
|
WITH Isolation Level Clause:
Enables the explicit specification of the isolation level used when locating the row to be deleted. This clause belongs to the SQL Extended Set. It is only valid against Db2 databases. When used against other databases, it will cause runtime errors. |
|
CS |
Cursor Stability | |
RR |
Repeatable Read | |
RS |
Read Stability | |
QUERYNO integer
|
QUERYNO Clause:
This clause belongs to the SQL Extended Set. This clause is not currently supported and will be ignored. |
|
The "positioned"
DELETE statement always refers to a cursor within a database loop. Therefore
the table referenced by a positioned DELETE statement must be the same as the
one referenced by the corresponding SELECT statement, otherwise an error message is returned. A
positioned DELETE cannot be used with a non-cursor selection.
The functionality of the positioned DELETE statement corresponds to that of
the "native" Natural DELETE
statement.
DELETE FROM
table-name
WHERE CURRENT OF CURSOR [(r)]
|
For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.
Syntax Element Description:
| Syntax Element | Description |
|---|---|
FROM
table-name WHERE CURRENT OF
CURSOR |
FROM Clause:
This clause specifies the table from which the rows are to be deleted. |
(r) |
Statement Reference:
The |
FOR
ROW ... OF ROWSET
|
FOR ROW … OF ROWSET Clause:
This clause belongs to the SQL Extended Set. The optional |