oracle ---- pl/sql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yb464855952/article/details/81463471

hadoop 基于java ,,spark 基于scala
--------------记录型变量
declare 
   -- 定义记录型变量:代表一行
   emp_rec     emp%rowtype;
begin
   select * into emp_rec from emp where empno=7839;  
   dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);  
end;
-------------------- 引用型变量
declare 
   pename    emp.ename%type;
   psal          emp.sal%type;
begin
   select ename,sal into pename,psal from emp where empno=7839;
   dbms_output.put_line(pename||'的薪水是'||psal);
end;
------------------------IF语句
         if   条件  then  语句1   
  elsif   条件  then  语句2  
    else  语句3 
   endif ;
------------------------循环
declare 
    pnum number := 1;
 begin
   loop
         --循环
         --退出条件
        exit when pnum > 10;
        dbms_output.put_line(pnum);
        --加一
       pnum := pnum + 1;
   end loop;
 end;
-------------------------光标
declare 
  -- 定义光标
  cursor  cemp  is     select    ename,sal    from      emp;
  pename      emp.ename%type;
  psal             emp.sal%type;
begin
  -- 打开光标
  open cemp;
  loop
        ------取当前记录
        fetch cemp into pename,psal;
        -------exit when 没有取到记录;
        exit when  cemp%notfound;
        dbms_output.put_line(pename||'的薪水是'||psal);
   end loop;
  --关闭光标
  close cemp;
end;
------------------------带参数的光标
declare 
     cursor   cemp(dno number)    is   select ename from emp where deptno=dno;
     pename    emp.ename%type;
begin
   open cemp(20);
   loop
        fetch cemp  into  pename;
        ---找不到退出
        exit   when    cemp%notfound;
        dbms_output.put_line(pename);
   end loop;
  close cemp;
end;
-------------------异常    系统例外
declare 
  pnum number;
begin
  pnum := 1/0; 
exception
  when   zero_divide    then      dbms_output.put_line('0不能做分母'); dbms_output.put_line('零不能做分母');
  when   value_error    then      dbms_output.put_line('算术或者转换错误');
  when   others            then      dbms_output.put_line('其他例外');
end; 
------------------------------异常 自定义例外demo
-- 查询50号部门的员工姓名
declare 
  --定义光标:代表50号部门的员工
  cursor    cemp  is select ename from emp where deptno=50;
  pename  emp.ename%type;
  --自定义例外
  no_emp_found exception;
begin
  open cemp;
   --取第一条记录
  fetch cemp into pename;
  if  cemp%notfound   then
      --抛出例外
      raise no_emp_found; --相当于java的throws
  end if;
  --pmon进程: process monitor
  close cemp;
exception 
    when   no_emp_found   then   dbms_output.put_line('没有找到员工');  
    when   others   then   dbms_output.put_line('其他例外');  
end;

猜你喜欢

转载自blog.csdn.net/yb464855952/article/details/81463471
今日推荐