015.PL-SQL编程—块

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线
在这里插入图片描述

PL-SQL编程—块

  • 块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块。要完成相对简单的应用功能,可能只需要编写一个pl/sql块;但是如果要实现复杂的功能,可能需要在一个pl/sql块中嵌套其他的pl/sql块。

  • 块结构示意图

    • pl/sql块由三部分构成:定义部分、执行部分、例外处理部分
    decleare
        /*定义部分:定义常量、变量、游标、例外、复杂数据类型*/
    begin
        /*执行部分:要执行的pl/sql语句和sql语句*/
    exception
        /*例外处理部分:处理运行的各种错误*/
    end;
    
    • 在这里插入图片描述

    • 定义部分从declare开始,该部分可选

    • 执行部分从begin开始,该部分必须

    • 例外处理部分从exception开始,该部分可选

  • pl/sql块实例部分

  • 实例1:只包括执行部分的pl/sql块

    set serveroutput on --打开输出选项
    set serveroutput off --关闭输出选项
    
    -- 最简单的块内容开始
    begin
        dbms_output.put_line('Hello world');
    end;
    
    -- 说明:dbms_output是oracle所提供的包。该包包含一些过程,put_line就是dbms_output包的一个过程
    
    • 在这里插入图片描述

    • set serveroutput on:执行之后会打印结果

    • set serveroutput off:执行之后不会打印结果

  • 实例2:包含定义部分和执行部分的pl/sql、块

    declare
        --定义变量
        v_ename varchar2(5);
    begin
        --执行过程
        select ename into v_ename from emp where empno=&no;
        --将结果输出到控制台
        dbms_output.put_line('员工姓名:'||v_ename);
    end;
    
    • 语句解释
    select ename into v_ename from emp where empno=&no;
    
    • empno=&no:&地址符表示此处的内容从控制台输入获取(no是自己取得变量名)

    • into v_ename:将查询到的结果存储到v_ename这个变量中

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 追加:查询多个信息(员工编号、姓名、工资)

      declare
        --定义变量
        v_ename varchar2(5);
        v_empno varchar2(4);
        v_sal number(7,2);
      begin
        --执行过程
        select ename,empno,sal into v_ename,v_empno,v_sal from emp where empno=&no;
        --将结果输出到控制台
        dbms_output.put_line('员工编号:'||v_empno||' |员工姓名:'||v_ename||' |工资待遇:'||v_sal);
      end;
      
    • 在这里插入图片描述

  • 实例3:包含定义部分、执行部分和例外处理部分的pl/sql块

    • 为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能得错误进行处理
    • 比如实例2中,如果输入了不存在的员工编号,就应该做例外处理
    • 相关说明:oracle实现预定义了一些例外,no_data_found就在找不到数据的例外
    declare
      --定义变量
      v_ename varchar2(5);
      v_empno varchar2(4);
      v_sal number(7,2);
    begin
      --执行过程
      select ename,empno,sal into v_ename,v_empno,v_sal from emp where empno=&empno;
      --将结果输出到控制台
      dbms_output.put_line('员工编号:'||v_empno||' |员工姓名:'||v_ename||' |工资待遇:'||v_sal);
    exception
      --异常处理
      when no_data_found then
        dbms_output.put_line('员工编号有误,请重新输入!');
    end;
    
    • 在这里插入图片描述

    • 在这里插入图片描述

课外小练习
  • 修改打印格式,让输出更美观

    declare
      --定义变量
      v_ename varchar2(5);
      v_empno varchar2(4);
      v_sal number(7,2);
    begin
      --执行过程
      select ename,empno,sal into v_ename,v_empno,v_sal from emp where empno=&empno;
      --将结果输出到控制台
      dbms_output.put_line('员工编号'||' |员工姓名'||' |工资待遇');
      dbms_output.put_line(rpad(v_empno,8,' ')||' |'||rpad(v_ename,8,' ')||' |'||rpad(v_sal,8,' '));
    exception
      --异常处理
      when no_data_found then
        dbms_output.put_line('员工编号有误,请重新输入!');
    end;
    
  • 在这里插入图片描述

  • 在这里插入图片描述

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失心疯_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值