-
什么是PL/SQL程序查看全部
-
Database PL/SQL Packages and Types Reference http://docs.oracle.com/database/121/ARPLS/toc.htm查看全部
-
光标的四个属性。 %found 找到记录 %notfound 没找到记录 %isopen 是否打卡 %rowcount 影响的行数查看全部
-
光标模式给员工涨工资。查看全部
-
光标的两个属性,%found 有数据,%notfound 没有数据查看全部
-
光标结果集没有记录的判断。查看全部
-
光标的使用查看全部
-
光标的语法,也称游标。查看全部
-
读取键盘输入,判断输入的值。 & 调用输入查看全部
-
引用型变量 表字段的数据类型, %type查看全部
-
记录型变量。 表的结构的数据类型,相当于一条记录查看全部
-
--以下内容经测试有效 DECLARE --声明游标 CURSOR C_EMP IS SELECT EMPNO,SAL FROM NEW_EMP ORDER BY SAL; --声明两个接收游标值的变量 P_SAL EMP.SAL%TYPE; P_EMPNO EMP.EMPNO%TYPE; --声明人数的变量 COUNTEMP NUMBER:=0; --声明涨工资后的变量,及最后输出工资结果的变量(工资结果要在提交之后重新赋值一次才准确) SUMSAL NUMBER; BEGIN SELECT SUM(SAL) INTO SUMSAL FROM NEW_EMP; OPEN C_EMP; LOOP --将游标的值赋值给变量 FETCH C_EMP INTO P_EMPNO,P_SAL ; --游标没有下一个的时候退出 EXIT WHEN C_EMP%NOTFOUND; --先把涨后的工资计算出来,然后在判断工资是否大于50000 SUMSAL := SUMSAL+P_SAL*0.1; --涨后工资大于50000过后不执行update语句 EXIT WHEN SUMSAL > 50000 ; --执行涨工资update语句 UPDATE NEW_EMP SET SAL = SAL*1.1 WHERE EMPNO = P_EMPNO; --没涨一次增加一次人数 COUNTEMP := COUNTEMP+1; END LOOP; CLOSE C_EMP; COMMIT; --最后在提交之后将总工资赋值给变量,因为在提交之前的话总工资是涨后的工资,只有在提交后才是没涨时的工资 SELECT SUM(SAL) INTO SUMSAL FROM NEW_EMP; --打印并输出 DBMS_OUTPUT.PUT_LINE('涨工资人数:'||COUNTEMP||';涨后的总工资:'||SUMSAL); END;查看全部
-
emp_rec emp%rowtype emp_rec是emp的行,数组类型,可以获取EMP的所有字段,加.字段即可。(记录型变量) pename emp.ename%type 某个字段的类型,只能获取表中的一个字段。(引用型变量)查看全部
-
set serveroutput on declare Cursor cdep is select dno, dname from dep; pdno dep.dno%type; pdname dep.dname%type; Cursor csc(p_cname course.cname%type, p_dno student.dno%type) is select grade from sc where cno = (select cno from course where cname = p_cname) and sno in (select sno from student where dno = p_dno); pgrade sc.grade%type; count1 number; count2 number; count3 number; avggrade number; begin open cdep; loop fetch cdep into pdno, pdname; exit when cdep%notfound; count1 := 0; count2 := 0; count3 := 0; avggrade := 0; open csc('大学物理', pdno); loop fetch csc into pgrade; exit when csc%notfound; if pgrade < 60 then count1 := count1 + 1; elsif pgrade < 85 then count2 := count2 + 1; else count3 := count3 + 1; end if; avggrade := avggrade + pgrade; end loop; avggrade := avggrade / (count1 + count2 + count3); insert into msg1 values ('大学物理', pdname, count1, count2, count3, avggrade); close csc; end loop; close cdep; end; /查看全部
-
案例概要查看全部
举报
0/150
提交
取消