赞
踩
工具PLSQL Developer 的Test Window创建模板或者在SQL Window编写,在PLSQL中是不区分大小写的
3个部分:声明部分,可执行代码块部分,异常处理部分
其中可执行代码块部分是必须的,其它2个部分可以不写。
语法:
declare
① 变量名 数据类型;--变量声明;
begin--可执行部分的开始
② 逻辑代码;
end;--可执行部分的结束
③异常处理部分
System.out.println("123");
- begin
- dbms_output.put_line('我是Oracle打印输出的结果');
- end;
注意事项:PL/SQL编程中的语句必须放入begin...end语句块中
- declare
- myname varchar2(100);
- begin
- --赋值 :=
- myname:='刘邦';
- dbms_output.put_line('myname = '||myname);
- end;
select sal from emp where empno = 7369;
-
- declare
- --声明一个变量保存查找的薪资
- mysal number;
- begin
- select sal into mysal from emp where empno = 7369;
- --打印输出
- dbms_output.put_line('薪水为: '||mysal);
- end;
- declare
- myempno number:=7369;
- mysal number;
- begin
- select sal into mysal from emp where empno = myempno;
- --打印输出
- dbms_output.put_line('薪水为: '||mysal);
- end;
- declare
- myempno number(10):='&输入员工编号';--编号
- mysal number(20);
- begin
- select sal into mysal from emp where empno = myempno;
- dbms_output.put_line(mysal);
- end;
- declare
- myempno emp.empno%type:=7369;--假设empno是number类型 emp.empno%type = number
- mysal emp.sal%type;
- begin
- select sal into mysal from emp where empno = myempno;
- dbms_output.put_line(mysal);
- end;
- declare
- myempno emp.empno%type:=7499;
- --根据行类型来定义一行的记录对象
- myemp emp%rowtype;
- begin
- select * into myemp from emp where empno = myempno;
- dbms_output.put_line(myemp.empno||' '||myemp.ename||' '||myemp.sal);
- end;
- declare
- mynum number(10):='&请输入一个数字';
- begin
- if (mod(mynum,2) = 0) then
- dbms_output.put_line('偶数');
- else
- dbms_output.put_line('奇数');
- end if;--结束if语句
- end;
- select ename,decode(sign(sal - 3000),'1','交税','-1','回家挖田','0','继续努力')
- from emp;
- declare
- myempno emp.empno%type:=7369;
- mysal emp.sal%type;
- begin
- select sal into mysal from emp where empno = myempno;
- --判断
- if (mysal > 3000) then
- dbms_output.put_line('交税');
- elsif (mysal = 3000) then
- dbms_output.put_line('继续努力');
- elsif (mysal < 3000) then
- dbms_output.put_line('回家挖田');
- end if;
- end;
- begin
- case '&请输入'
- when 'A' then dbms_output.put_line('优秀');
- when 'B' then dbms_output.put_line('良好');
- when 'C' then dbms_output.put_line('一般');
- when 'D' then dbms_output.put_line('low');
- else
- dbms_output.put_line('鬼');
- end case;
- end;
- loop循环 (涉及到嵌套需要命名 结束循环)
- for...in
注意:loop循环 (涉及到嵌套需要命名 结束循环)
- declare
- mynum number(20):=1;
- begin
- loop
- dbms_output.put_line(mynum);
- --递增+1
- mynum:=mynum+1;
- --满足条件就结束
- exit when mynum = 101;
- end loop;
- end;
- declare
- mynum number(20):=0;
- begin
- loop
-
- dbms_output.put_line(mynum);
- --满足条件就结束
- exit when mynum = 100;
- --递增+1
- mynum:=mynum+2;
-
- end loop;
- end;
- declare
- mynum number(10):=1;
- mysum number(10):=0;
- begin
- <<myloop>>
- loop
- mysum:=mysum+mynum;
- mynum:=mynum+1;
- exit myloop when mynum = 101;
- end loop;
- dbms_output.put_line(mysum);
- end;
- declare
- mynum number(10):=1;
- mysum number(10):=0;
- begin
- <<myloop>>
- loop
- if (mod(mynum,2) = 0) then
- mysum:=mysum+mynum;
- end if;
- mynum:=mynum+1;
- exit myloop when mynum = 101;
- end loop;
- dbms_output.put_line(mysum);
- end;
- declare
- mynum number(10):=1;
- begin
- while (mynum <= 100) loop
- dbms_output.put_line(mynum);
- mynum:=mynum + 1;
- end loop;
- end;
- begin
- for i in 1..100 loop
- dbms_output.put_line(i);
- end loop;
- end;
- declare
- mysum number(10):=0;
- begin
- for i in 1..100 loop
- if(mod(i,2)=0) then
- mysum:=mysum+i;
- end if;
- end loop;
- dbms_output.put_line(mysum);
- end;
- declare
- myempno emp.empno%type:=250;
- mysal emp.sal%type;
- begin
- select sal into mysal from emp where empno = myempno;
- dbms_output.put_line(mysal);
- --异常处理部分
- exception
- when no_data_found then
- dbms_output.put_line('提供的编号不存在');
- end;
- declare
- mysal emp.sal%type;
- begin
- select sal into mysal from emp;
- dbms_output.put_line(mysal);
- --异常处理部分
- exception
- when too_many_rows then
- dbms_output.put_line('行太多异常');
- end;
- declare
- mysal emp.sal%type;
- begin
- select sal into mysal from emp;
- dbms_output.put_line(mysal);
- --异常处理部分
- exception
- when too_many_rows then
- dbms_output.put_line('行太多异常');
-
- when no_data_found then
- dbms_output.put_line('提供的编号不存在');
- end;
重点:
自定义异常 exception 定义异常 raise 抛出异常
步骤
1.声明 异常名称 exception;
2.抛出 raise 异常名称;
3.捕捉 excetpion when 异常名称 then 输出异常结果提示;
- declare
- myAgeException exception; --自己定义异常
- myAge number(20):=45;
- begin
- if (myAge < 20 or myAge > 36) then
- raise myAgeException;
- else
- dbms_output.put_line('年龄为: '||myAge);
- end if;
- --捕捉异常
- exception
- when myAgeException then
- dbms_output.put_line('年龄不在指定的范围内');
- end;
函数就是方法 方法就是函数
方法的核心:封装代码,方便调用
- create or replace function returnSum(mynum number)
- return number is
- mysum number:=0;--保存和
- begin
- for i in 1..mynum loop
- mysum:=mysum+i;
- end loop;
- return mysum;
- end;
-
- --调用
- select returnSum(100) from dual;
- create or replace function getSalByEmpno(myempno emp.empno%type)
- return emp.sal%type is
- mysal emp.sal%type;
- begin
- select sal into mysal from emp where empno = myempno;
- return mysal;
- end;
-
-
- --调用
- select getSalByEmpno(7369) from dual;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。