1表中插入一条纪录。要求:部门号比最大部门号大10;部门名称使用SQL*plus替换变量,让用户输入部门名称;部门位置暂且为空值。2.写一个PL/SQL块,修改现存部门的部门位置。使用替换变量让用户输入部门号码,和要修改的部门位置的值。并显示修改后的结果:部门号、新的位置。3查询数据使用PL/SQL做DML操作游标的属性介绍4中的SQL语句–使用SELECT语句可以取出数据行.但只能返回一行数据.–使用DML语句可以改变数据库中的数据行.–使用COMMIT,ROLLBACK,或者SAVEPOINT语句来控制一个事务.–使用隐式游标来检验DML语句的输出.5中的SELECT语句•使用SELECT语句从数据库中查询数据.•语法:SELECTselect_listINTO{variable_name[,variable_name]...|record_name}FROMtableWHEREcondition;6中的SELECT语句•需要使用INTO子句.•例子:查询出部门“SALES”部门号和位置DECLAREv_deptnoNUMBER(2);v_locVARCHAR2(15);BEGINSELECTdeptno,locINTOv_deptno,v_locFROMdeptWHEREdname='SALES';dbms_output.put_line(v_deptno);dbms_output.put_line(v_loc);END;/7来查询数据•查出某个部门中,所有雇员的工资之和.•举例:DECLAREv_sum_salemp.sal%TYPE;v_deptnoNUMBERNOTNULL:=10;BEGINSELECTSUM(sal)--groupfunctionINTOv_sum_salFROMempWHEREdeptno=v_deptno;DBMS_OUTPUT.PUT_LINE(v_sum_sal);END;/8来操纵数据•使用DML语句来修改数据库表中的数据:–INSERT–UPDATE–DELETE9插入数据•向EMP表中增加新的员工.•例子:CREATESEQUENCEempno_sequenceSTARTWITH1000INCREMENTBY1NOCACHECYCLE;BEGININSERTINTOemp(empno,ename,job,deptno)VALUES(empno_sequence.NEXTVAL,'HARDING','CLERK',10);END;/10修改数据•在EMP表中,增加职务是Analysts的雇员的工资.•例子:DECLAREv_sal_increaseemp.sal%TYPE:=2000;BEGINUPDATEempSETsal=sal+v_sal_increaseWHEREjob='ANALYST';commit;END;11删除数据•从EMP表中,删除10号部门的所有的员工的信息.•例子:DECLAREv_deptnoemp.deptno%TYPE:=10;BEGINDELETEFROMempWHEREdeptno=v_deptno;END;12语句–一个事务开始的DML语句往往以COMMIT或者ROLLBACK开头,以初始化一个新的事务.–使用COMMIT和ROLLBACK命令来明确的结束一个事务.13游标–游标是Oracle服务器为SQL语句建立的一个私有的SQL工作区.–两种游标:•隐式(Implicit)游标•显式(Explicit)游标–在缺省情况下,Oracle服务以隐式游标来编译和执行SQL语句.–显式游标是由编程者明确指定的.14游标属性•使用SQL游标属性,可以测试SQL语句的输出.SQL%ROWCOUNT最后一次执行的SQL语句,所影响到的数据行数(一个整数值)SQL%FOUND一个布尔值,如果最后一次SQL语句影响到了一条或者多条记录,那么该值为True,否则为falseSQL%NOTFOUND一个布尔值,如果最后一次SQL语句影响到了一条或者多条记录,那么该值为False,否则为trueSQL%ISOPEN一个布尔值,如果游标是打开的,那么该值为true,否则为false。对于隐式游标,该值永远为false,因为当语句执行完毕后,游标自动关闭15游标属性•从emp05表中删去员工号为7369的员工信息,并打印删除的行数.•例子:createtableemp05asselect*fromemp;VARIABLErows_deletedVARCHAR2(30)DECLAREempno_idemp.empno%TYPE:=7369;BEGINDELETEFROMemp05WHEREempno=empno_id;:rows_deleted:=(SQL%ROWCOUNT||'rowsdeleted.');dbms_output.put_line(:rows_deleted);END;16表中插入一条纪录。要求:部门号比最大部门号大10;部门名称使用SQL*plus替换变量,让用户输入部门名称;部门位置暂且为空值。DECLAREtempdept.deptno%type;v_deptnonumber(2);v_dnamevarchar(14);v_locvarchar(13);BEGINselectmax(deptno)intotempfromscott.dept;temp:=temp+10;insertintodept(deptno,dname,loc)values(temp,'&v_dname',null);selectdeptno,dname,locintov_deptno,v_dname,v_locfromscott.deptwheredeptno=temp;dbms_output.put_line(v_deptno);dbms_output.put_line(v_dname);dbms_output.put_line(v_loc);END;/练习案例17块,修改现存部门的部门位置。使用替换变量让用户输入部门号码,和要修改的部门位置的值。并显示修改后的结果:部门号、新的位置。DECLAREv_deptnonumber(2);v_locvarchar(13);BEGINv_deptno:=&deptno;v_loc:='&location';UPDATEdeptsetloc=v_locwheredeptno=v_deptno;selectdeptno,locintov_deptno,v_locfromdeptwheredeptno=v_deptno;DBMS_OUTPUT.PUT_LINE('deptno'||'loc');DBMS_OUTPUT.PUT_LINE(to_char(v_deptno)||''||v_loc);END;/练习案例