当前位置:数据库 > SQLServer >>

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;
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,