DELETE
删除表中数据。
语法格式
sql
deletestmt::=
DELETE del_targ_tab [ opt_from_clause ] [ opt_where_clause ] [ opt_returning ] [ opt_bulk ] [ opt_into_list ]
| DELETE del_targ_tab [ opt_from_clause ] WHERE CURRENT OF name [ opt_returning ] [ opt_bulk ] [ opt_into_list ]
参数说明
del_targ_tab
:删除数据的表或视图名,前面也可加上相应的模式名;名称前可加或不加关键字 FROM。opt_from_clause
:可选的 FROM 从句,用于从另一个或多个表中查询结果作为目标删除数据的定位条件。opt_where_clause
:可选的 WHERE 从句,用于对从表中查询出的数据做过滤或限制。WHERE CURRENT OF name
:通常用于游标删除时的定位条件。opt_returning
、opt_into_list
:可选的关键词,用于把删除后的数据输出至指定的变量或数据结构。opt_bulk
:可选关键词,用于修饰opt_returning
opt_into_list
关键词,指定该关键词后把结果一次性输出,而不是每次输出一行数据。
示例
示例1
sqlDELETE t1 WHERE c3 = '2005-05-05';
示例2
sqlDELETE FROM t2 b FROM t1 a WHERE a.c1 = b.c1 AND a.c3 > '2003-01-01';
示例3
删除时将结果 RETURNING。sqlDECLARE TYPE type_table_1 IS TABLE OF t1%ROWTYPE; -- UDT类型:T1 行类型的嵌套表 var_t1 TYPE_TABLE_1; -- UDT类型变量,用来保存游标中查询的数据 TYPE type_c3 IS TABLE OF t2.c2%TYPE; -- UDT类型:DATE 类型的嵌套表 var_c3 TYPE_C3; -- UDT类型变量,用来保存 RETURNING 的值 CURSOR cur IS SELECT * FROM t1; BEGIN OPEN cur; FETCH cur BULK COLLECT INTO var_t1; DELETE FROM t2 WHERE t2.c1 = (var_t1(4).c1 + 1) RETURNING c3 BULK COLLECT INTO var_c3; -- 如果需要,可把 RETURNING 的数据输出至屏幕或表中 FOR i IN 1..var_c3.COUNT() LOOP SEND_MSG(var_c3(i)); END LOOP; END;