PL/SQL基本语法,给不同身份的人涨工资
PL/SQL基本语法,给不同身份的人涨工资
/*
给员工涨工资:总裁1000 经理800 其他400\
可能用到的sql语句就是
update emp e e.sal=e.sal+??? where e.empno=empno; ,由于不知道给那个职位的涨工资,
所以是要判断的,根据job,这个job从哪里来,当然从emp表中来
select empno,ename ,sal from emp;
做这个的时候应该先把可能有可能出现的Sql都写出来,
这样子是一种方法,是IBM的DBA培训讲师告知的。
*/
set serveroutput on
--声明输入开关
declare
--定义游标。这个cemp就是保存多个变量的值的,相当于一个集合,好吧
cursor cemp is select empno, empjob from emp;
--定义变量,这是其中方式之一
pempno emp.empno%type;
pjob emp.empjob%type;
begin
--开始
--1: 打开游标
open cemp;
--循环游标中的值,给变量赋值
LOOP
--取出第一个员工
fetch cemp into pempno, pjob;
--退出,当是这个条件的时候推出
exit when cemp%notfound;
--开始判断职位 ,
/*
那个 语法介绍一下, 游标的使用语法 ,1: 定义游标 ,cursor 游标名字 is 后面是要向游标中添加那些值
2: 打开游标,
3: 取出游标里面的值,用 fetch ,一般都是写在循环里面,把游标的值赋给定义的变量,
4: 关闭游标
*/
/*
判断语法 if then, elsif then, else end if;
*/
/*
循环的方法有三种, loop , end loop; 这是使用最常见的一种
*/
if pjob='PRESIDENT' then update emp set sal=sal+1000 where empno= pempno;
elsif pjob='MANAGER' then update emp set sal=sal+800 where empno=pempno;
else update emp set sal=sal+200 where empno=pempno;
end if;
END LOOP ;
close cemp;
--提交所修改的东西
commit;
dbms_output.put_line('涨工资完成');
end;