PL/SQL程序设计

来源:互联网 发布:淘宝网代卖怎么做的 编辑:程序博客网 时间:2024/06/18 18:13

--第一个plsql程序

declare

 out_str varchar2(20);

begin

 out_str:='第一个plsql程序示例';

  dbms_output.put_line(out_str);

 exception

   when others then

     dbms_output.put_line('发生了异常,请检查代码');

end;

 

--开启输出的开关

set serveroutput on;

 

--伪列行标识 rowid

--伪列行号 rownum

 

--定义变量,并且给变量赋值

declare

 theId int:=105;

 theName varchar2(20);

begin

 --theId:=&tt;

 --theName:='&qq';

 select userId,userName into theId,theName from myusers where userId=102;

 dbms_output.put_line('编号:'||theId||',名称:'||theName);

end;

 

--条件控制

declare

 num1 int;

 num2 int;

begin

 num1:=&tt;

 num2:=&qq;

  ifnum1>num2 then

   dbms_output.put_line(num1||'大于'||num2);

   dbms_output.put_line('num1大于num2');

  endif;

end;

--if else结构

declare

 num1 int;

 num2 int;

begin

 num1:=&tt;

 num2:=&qq;

  ifnum1>=num2 then

   dbms_output.put_line(num1||'大于等于'||num2);

 else

   dbms_output.put_line('num1小于num2');

  endif;

end;

-- if elsif else 结构

declare

 num1 int;

 num2 int;

begin

 num1:=&tt;

 num2:=&qq;

  ifnum1>num2 then

   dbms_output.put_line(num1||'大于'||num2);

 elsif num1<num2 then

   dbms_output.put_line(num1||'小于'||num2);

 else

   dbms_output.put_line(num1||'等于'||num2);

  endif;

end;

 

--case结构对应于java里面的switch

--要求弹一个输入框,输入一个成绩,显示成绩的等级

declare

 result int;

begin

 result:=&tt;

 result:=trunc(result/10);   --取整

 case result

   when 9 then dbms_output.put_line('成绩优秀,奖励华为手机');

   when 8 then dbms_output.put_line('成绩良好,奖励小米手机');

   when 7 then dbms_output.put_line('成绩一般,奖励100块');

   when 6 then dbms_output.put_line('刚好及格,适当鼓励');

   else dbms_output.put_line('奖励一巴掌');

  endcase;

end;

 

--循环,四要素:初始化循环条件,循环判断,循环操作,改变循环条件

--1.通过if退出 ,从1加到100

declare

  iint:=1;

 result int:=0;

begin

 loop

   result:=result+i;

   if i=100 then

     exit;

   end if;

   i:=i+1;

  endloop;

 dbms_output.put_line('累加的结果是:'||result);

end;

 

--exit when

declare

  iint:=1;

 result int:=0;

begin

 loop

   result:=result+i;

   exit when i=100;

   i:=i+1;

  endloop;

 dbms_output.put_line('累加的结果是:'||result);

end;

-- while循环

declare

  iint:=1;

 result int:=0;

begin

 while i<=100 loop

   result:=result+i;

   i:=i+1;

  endloop;

 dbms_output.put_line('累加的结果是:'||result);

end;

 

--for 类似于foreach

declare

  iint:=1;

 result int:=0;

begin

  fori in 1..100 loop

     result:=result+i;

  endloop;

 dbms_output.put_line('累加的结果是:'||result);

end;

 

--顺序控制 goto语句

begin

 dbms_output.put_line('程序开始...');

 goto second_tag;

 dbms_output.put_line('程序运行...');

 <<second_tag>>

 dbms_output.put_line('程序继续运行...');

 NULL;

end;

 

--异常处理

declare

 theName varchar2(20);

begin

 --insert into myusers values(102,'小花','123');

 --commit;

 --select userName into theName from myusers where userId=104;

 exception

   when dup_val_on_index then

     dbms_output.put_line('违反了唯一约束');

     rollback;

   when no_data_found then

     dbms_output.put_line('没有找到相关值');

   when too_many_rows then

     dbms_output.put_line('给单个变量赋了多个值');

   when others then

     dbms_output.put_line('发生了其他异常');

end;

原创粉丝点击