01.PLSQL语法(变量,if,loop,cursor,exception)

database

1. 语法

  • 在数据库服务器上保存的打断可执行方法,供其他开发人员调用

  • 可以有效的减少数据库端和服务端的数据交互,提高效率,降低带宽消耗

  • 语法格式:

    declare -- 定义部分,保存变量,引用型变量,记录型异常

    begin -- 逻辑处理部分

    exception -- 需要捕获异常是写上

    end; -- 结束

2. 定义变量

定义

描述

constant

常量

表名%rowtype

记录型变量

表名.列名%type

引用型变量

:=

给变量赋予默认值

into

把查询出来的数据进行赋值

  • 实例

declare

-- 定义变量

i number := 1;

-- 定义常量

pi constant number := 2;

-- 定义记录型变量/记录一行数据

-- 变量名 表名%rowtype;

v_emp emp%rowtype;

-- 定义引用型变量

-- 变量名.列明%type

pname emp.ename%type;

begin

select * into pemp from emp;

end;

3. if判断

  • 语法:

    /*

    if判断:

    if 条件表达式 then

    elsif 条件表达式 then

    else

    end if;

    */

    -- 实例:

    declare

    age number := 18;

    begin

    if age = 17 then

    dbms_output.put_line("我是17");

    elsif age = 18 then

    dbms_output.put_line("我是18");

    else

    dbms_output.put_line("我是??");

    end if;

    end;

4. loop循环

  • 语法:

    /*

    语法一: 相当于while循环

    while 条件表达式 loop

    end loop;

    */

    -- 实例

    declare

    i number := 0;

    begin

    while i < 10 loop

    i := i + 1;

    dbms_output.put_line(i);

    end loop;

    end;

    /*

    语法二:

    loop

    exit when 退出循环条件

    end loop;

    */

    -- 实例:

    declare

    i number := 0;

    begin

    loop

    i := i + 1;

    exit when i > 10;

    dbms_output.put_line(i);

    end loop;

    end;

    /*

    语法三:

    1..10: 也可以是查询出来的结果集

    for 变量 in 1..10 loop;

    end loop

    */

    -- 实例:

    declare

    i number := 0;

    begin

    for i in 1..10 loop

    dbms_output.put_line(i);

    end loop;

    end;

5. cursor游标

  • 是一个私有的SQL工作区,分为隐式游标和显示游标,我们通常声明的是显示游标

  • 用来操作结果的,相当于java中的迭代器

  • 语法:

    /*

    开发步骤:

    1. 声明游标: cursor 游标名 is 查询结果集

    2. 打开游标: open 游标名

    3. 从游标中取出数据: fetch 游标名 into 变量名

    游标名%found: 找到数据

    游标名%notfound: 没有找到数据

    4. 关闭游标

    */

    declare

    emp_rows emp%rowtype;

    -- 1.

    cursor rows is select * from emp;

    begin

    -- 2.

    open rows;

    -- 2.1

    loop

    -- 3.

    fetch rows into emp_rows;

    -- 3.1

    exit when rows%notfound;

    dbms_output.put_line(emp_rows.ename);

    -- 3.2

    end loop;

    -- 4.

    close rows;

    end;

6. exception异常

类型

描述

no_data_found

找不到数据

too_many_rows

匹配到多个字符

zero_divide

零除

value_error

算数或转换异常

timeout_on_resource

在等待资源时发生超时

others

最大的异常/相当于java中的exception

  • 语法:

    /*

    yvfa:

    declare

    begin

    exception

    when 异常类型 then

    处理

    end;

    */

    -- 实例:

    declare

    num number := 1;

    begin

    num := num/0 ;

    exception

    when zero_divide then

    dbms_output.put_line("除零异常");

    end;

    -- 自定义异常:

    declare

    no_date exception;

    begin

    raise no_date;

    exception

    when no_date then

    dbms_output.put_line("自定义异常");

    end;

以上是 01.PLSQL语法(变量,if,loop,cursor,exception) 的全部内容, 来源链接: utcz.com/z/533314.html

回到顶部