Oracle学习笔记 -- day07 PL/SQL基本语法之变量、常量、游标、异常

来源:互联网 发布:安卓微信数据恢复 编辑:程序博客网 时间:2024/05/22 08:14

一、PL/SQL语言的语法

1、基本语法结构

[declare]   --声明 --可以在此声明  变量 常量 游标  异常begin   --逻辑处理语句[exception]    --异常处理语句  try  catchend;

2、变量和常量

:=    在PL/SQL中就是赋值的意思

%type    引用型变量,v_sal emp.sal%type; 意思是引用emp表中sal字段的数据类型给v_sal 这个变量      

=     在PL/SQL中就相当于java中的 ==,是用来进行判断的

dbms_output.put_line(要打印的变量);    打印数据

%rowtype;    记录型变量,v_row emp%rowtype; 即将emp中的某一条数据,放入变量v_row中,此时变量可以使用.字段名,来进行查询数据

constant    常量 相当于Java final

-------声明变量和常量declare --java  private int age=1;v_age number(3):=1;  --:=就是赋值  =相当于Java中的==v_name varchar2(30):='sminth';v_sal emp.sal%type:=100;     --引用型变量v_row emp%rowtype;           --记录型变量v_sex constant number(1):=1; --constant常量 相当于Java finalbegin  --v_sex:=0; --常量在此赋值会报错  v_age:=100;  select ename,sal into v_name,v_sal from emp where empno=7788; select * into v_row from emp where empno=7788;  dbms_output.put_line(v_row.ename||v_row.sal||v_row.job);end;

3、if 分支

(1)、第一种语法

if 条件 then

    逻辑处理语句

end if

(2)、第二种语法

if 条件 then

    逻辑处理语句

else

    逻辑处理语句

end if;

(3)、第三种语法

if 条件 then

    逻辑处理语句

elsif 条件 then

    逻辑处理语句

elsif 条件 then

    逻辑处理语句

...........    

else

    逻辑处理语句

end if

(4)、示例:输入一个年龄数据,如果小于18,打印“未成年人”,18到60 成年人,60以上 老年人

declarev_age number(4):=&sjdj;begin  if v_age<18 then  dbms_output.put_line('未成年人');elsif v_age>=18 and v_age<=60  then    dbms_output.put_line('成年人');else    dbms_output.put_line('老年人');end if; end;

二、循环

1、无条件循环(常用)

语法:

        loop

             循环的内容 

        end loop;

示例:打印1到100个数

declare v_num number:=1;begin  loop    --if v_num>100 then     -- exit;          --end if;      exit when v_num>100;    dbms_output.put_line(v_num);    v_num:=v_num+1;  end loop;end;

2、有条件循环

语法:

        while 条件

        loop 

             循环的内容

        end loop;

示例:

declare v_num number:=1;begin  while v_num<=200  loop    dbms_output.put_line(v_num);    v_num:=v_num+1;  end loop;end;

3、for循环

语法:

        for 变量名 in 起始值 .. 终止值

            loop

                 循环的内容

            end loop;

示例:

begin  for v_num in 1..100  loop    dbms_output.put_line(v_num);  end loop;end;  

三、游标

1、什么是游标

游标是用来接受多个对象的

2、游标的定义语法

cursor 游标名称 is  sql查询语句;

3、游标的使用语法

open 游标名称

    loop

        fetch 游标名称  into 记录型变量   --  使用关键字fetch将游标中的一条数据取出,使用into关键字将数据放入一个变量中

        exit when 游标名称%notfound;     --  当游标中没有数据的时候,退出循环

    end loop;

close 游标名称

4、示例:打印所有员工的信息

declare cursor c_emp is select * from emp; v_row emp%rowtype;begin  open c_emp;    loop     fetch c_emp  into v_row;      exit when c_emp%notfound;      dbms_output.put_line(v_row.ename||'---'||v_row.job);   end loop;  close c_emp; end;

5、示例:打印指定部门的员工的信息

declare cursor c_emp(v_no number) is select * from emp where deptno=v_no; v_row emp%rowtype;begin  open c_emp(10);    loop     fetch c_emp  into v_row;      exit when c_emp%notfound;      dbms_output.put_line(v_row.ename||'---'||v_row.job);   end loop;  close c_emp; end;

四、异常

1、异常的作用

增强代码的容错性和健壮性

2、预定义异常

(1)、系统定义的异常


(2)、代码示例

declare v_num number(6):=9; v_name varchar2(1);begin  --v_num:=1/0;  -- ZERO_DIVIDE  v_name:='simth';   --VALUE_ERROR  exception    when ZERO_DIVIDE then  -- 使用 when 捕获异常,使用 then 对异常进行处理,ZERO_DIVIDE是发生的异常类型     v_num:=0;    dbms_output.put_line(v_num);    -- when  VALUE_ERROR then     when others then      -- others相当于java中的Exception,即others代表了所有异常    v_name:='s';   dbms_output.put_line(v_name);  end;

3、自定义异常

--输入一个年龄,如果年龄超过150,抛异常“年龄太大,请检查数据”declarev_age number:=&age;exc_age exception;  --异常的声明方式,exc_age为异常名称begin  if v_age >150 then    raise exc_age;  -- 抛出异常使用raise关键词,相当于java中的throw  end if;    -- 以下  exception    when exc_age then    -- dbms_output.put_line('年龄太大,请检查数据');'    --错误窗口的弹出   oracle中 -20001至-29999 可以使用     raise_application_error(-20001,'年龄太大,请检查数据');end;


原创粉丝点击