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;