3.4.2 如何使用DML语句
在PL/SQL块中可以包含INSERT、DELETE、UPDATE语句,用于对数据库中的表进行增、删、改等操作。在这些语句中,可以使用数字、字符串等形式的常量,也可以使用变量,还可以使用记录型变量。例如,下面的程序向dept表中插入两行:
DECLARE
dno integer;
d_name dept.dname%type;
d_location dept.loc%type;
BEGIN
INSERT INTO dept VALUES(50,'NETWORK','NOWHERE');
dno:=60;
d_name:='DEVELOP';
d_location:='NOWHERE';
INSERT INTO dept VALUES(dno, d_name, d_location);
END;
两条INSERT语句都是将三个常量作为三个列的值,将其插入表中。
在使用记录型变量时,可以将各个字段的值作为表中各列的值,向表中插入一行,在INSERT语句的VALUES子句中必须指定记录型变量各个字段的值。例如:
DECLARE
TYPE department is RECORD
(d_no integer,
d_name dept.dname%type,
d_location dept.loc%type
);
depart department;
BEGIN
depart.d_no:=70;
depart.d_name:='MAINTAIN';
depart.d_location:='NOWHERE';
INSERT INTO dept(deptno, dname, loc)
VALUES(depart.d_no, depart.d_name, depart.d_location);
END;
在删除表中的数据时,在DELETE语句的WHERE子句中也可以使用变量,例如,以下例子要从dept表中删除某个部门的信息,部门编号由变量dno指定。
DECLARE
dno number;
BEGIN
dno:=70;
DELETE FROM dept WHERE deptno=dno;
END;
在修改表中的数据时,在UPDATE语句的SET子句和WHERE子句中可以使用变量,也可以使用记录型变量。如果是记录型变量,则要单独使用该变量的各个字段。例如,下面的例子要修改某部门的信息,部门编号由变量dno指定,该部门的信息存放在记录型变量depart中。
DECLARE
dno number;
TYPE department is RECORD
(
d_name dept.dname%type,
d_location dept.loc%type
);
depart department;
BEGIN
dno:=60;
depart.d_name:='MONITOR';
depart.d_location:='WASHINGTON';
UPDATE dept
SET dname=depart.d_name, loc=depart.d_location
WHERE deptno=dno;
END;