-
plsql的程序结构
查看全部 -
PL/SQL 是对SQL语言的扩展
2. PL/SQL 是面向过程的语言(循环等) 不同数据库的SQL扩展
Orable:PL/SQL
DB2:SQL/PL
SQL Server:Transac-SQL(T-SQL)
查看全部 -
还没看视频先做一遍。。。唉,还是有很多问题。
set serveroutput on; DECLARE number1 NUMBER:=0; --小于3000元以下 number2 NUMBER:=0; --3000至6000之间 number3 NUMBER:=0; -- 6000以上 countAll NUMBER:=0; --小于3000元以下总额 tempDeptno NUMBER; --当选部门 CURSOR cemp IS SELECT d.deptno, d.dname, e.sal FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno; pdeptno dept.deptno%type; pdname dept.dname%type; psal emp.sal%type; BEGIN SELECT deptno INTO tempDeptno FROM dept WHERE rownum <=1 ORDER BY deptno ASC ; --第一个部门 OPEN cemp; --开启光标 LOOP --开启循环 FETCH cemp INTO pdeptno,pdname,psal; --赋值 EXIT WHEN cemp%notfound; IF pdeptno!=tempDeptno THEN --换部门啦 dbms_output.put_line('部门号:'||tempDeptno||',小于3000元的人数为:'||number1||',3000到6000区间的人数为:'||number2||',6000以上的人数为:'||number3||',总额为:'||countAll); number1 :=0; --重置数据 number2 :=0; number3 :=0; countAll :=0; tempDeptno := pdeptno; IF psal <3000 THEN number1 :=number1+1; elsif psal>=3000 AND psal<=6000 THEN number2 :=number2+1; ELSE number3:=number3+1; END IF; countAll := countAll+psal; ELSE IF psal <3000 THEN number1 :=number1+1; elsif psal>=3000 AND psal<=6000 THEN number2 :=number2+1; ELSE number3:=number3+1; END IF; countAll := countAll+psal; END IF; END LOOP; CLOSE cemp; --一旦结束循环就是最后一个部门的参数了。 dbms_output.put_line('部门号:'||tempDeptno||',小于3000元的人数为:'||number1||',3000到6000区间的人数为:'||number2||',6000以上的人数为:'||number3||',总额为:'||nvl(countAll,0)); END;
查看全部 -
SET serveroutput ON; DECLARE CURSOR cemp IS SELECT sal,ename,empno FROM emp ORDER BY sal ASC; pename emp.ename%type; --员工名称 psal emp.sal%type; -- 员工工资 pempno emp.empno%type; --员工编号 person NUMBER:=0; --人数 allSal NUMBER; --总工资 sal_toMany EXCEPTION; --异常 BEGIN rollback; SELECT SUM(sal) INTO allSal FROM emp; --总金额; dbms_output.put_line('初始总金额为:'||allSal); OPEN cemp; LOOP IF allSal>55000 THEN --每次循环先判断工资总额有没有超过5万元。 raise sal_toMany; END IF; FETCH cemp INTO psal,pename,pempno; allSal :=allSal+ psal*0.1; --总工资额增加 psal := psal + psal*0.1; --增长百分之10% person :=person+1; --人数加1 dbms_output.put_line('涨工资的员工名称'||pename||'涨完金额为:'||psal); update emp set sal = psal where empno = pempno; EXIT WHEN cemp%notfound; END LOOP; dbms_output.put_line('涨工资后的工资总额:'||allSal); dbms_output.put_line('涨工资后的人数:'||person); CLOSE cemp; commit; EXCEPTION WHEN sal_toMany THEN dbms_output.put_line('金额已超过5.5万元'); dbms_output.put_line('涨工资后的工资总额:'||allSal); dbms_output.put_line('涨工资后的人数:'||person); END;
查看全部 -
if语句:
1 if 条件 then 语句1
语句2
end if
2, if 条件 then 语句1
else 语句2
end if
3, if 条件 then 语句1
elsif 条件 then 语句2
else 语句3
end if
查看全部 -
引用型变量:ename1 emp.ename%type
记录型变量: emp_rec emp%rowtype
查看全部 -
带参数光标实例
查看全部 -
带参数的光标语法。
查看全部 -
游标的基本属性4个及修改默认游标上线值
查看全部 -
使用游标(光标)实际例子
查看全部 -
光标(游标)的使用实例 光标的前2种属性。
查看全部 -
光标(游标)定义语法
查看全部 -
光标(游标)定义语法
查看全部 -
for循环
查看全部
举报
0/150
提交
取消