01. PLSQL 语法(变量,if,loop,cursor,exception)「建议收藏」

01. PLSQL 语法(变量,if,loop,cursor,exception)「建议收藏」1. 语法 在数据库服务器上保存的打断可执行方法,供其他开发人员调用 可以有效的减少数据库端和服务端的数据交互,提高效率,降低带宽消耗 语法格式: declare — 定义部分,保存变量,引用型变…

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

1. 语法

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

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

  • 语法格式:

    declare -- 定义部分,保存变量,引用型变量,记录型异常
    
    begin -- 逻辑处理部分
    
    exception -- 需要捕获异常是写上
    
    end; -- 结束
    

    代码100分

2. 定义变量

定义描述
constant常量
表名%rowtype记录型变量
表名.列名%type引用型变量
:=给变量赋予默认值
into把查询出来的数据进行赋值
  • 实例
代码100分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循环

  • 语法:

    代码100分/*
    语法一: 相当于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;
    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8813.html

(0)
上一篇 2023-02-21 16:00
下一篇 2023-02-21 17:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注