zoukankan      html  css  js  c++  java
  • pl/sql基础知识—pl/sql块介绍

    n  介绍

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

    n  块结构示意图

    pl/sql块由三个部分构成:定义部分、执行部分、例外处理部分,如下所示:

     
       

     

     

     

     

     

     

     

     

     

     

    n  案例1--只包括执行部分的pl/sql块。

    案例:输出hello,world

    ☞相关说明:

    dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。

    SQL> set serveroutput on;  //打开控制台显示,默认不输出,需要执行此命令才会输出显示

    SQL>

    SQL> begin

      2    dbms_output.put_line('hello,world');

      3    end;

      4  /

    hello,world

    PL/SQL procedure successfully completed

     

    n  案例2--包括定义部分和执行部分的pl/sql块。

    案例:根据用户输入的雇员编号,显示该雇员的名字

    ☞相关说明:

    & 表示要接收从控制台输入的变量

    ‖表示把两个串拼接

     

     declare  --定义变量的格式:变量名称  变量的类型

      v_ename varchar2(8);

      begin

        select ename into v_ename from emp where empno=&empno;--把查询的ename值放入v_ename变量

        ---输出v_ename

        dbms_output.put_line('雇员名是:'||v_ename);

        end;

    雇员名是:SMITH

    PL/SQL procedure successfully completed

     

    将其改为过程

    SQL> create procedure pro3(in_empno number) is

      2    v_ename varchar2(8);

      3    begin

      4      select ename into v_ename from emp where empno=in_empno;

      5      dbms_output.put_line('雇员名是:'||v_ename);

      6      end;

      7  /

    Procedure created

    SQL> exec pro3(7369);

    雇员名是:SMITH

    PL/SQL procedure successfully completed

     

    n  案例3--包括定义部分和执行部分和例外处理部分。

    为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理,这个很有必要:

    ①比如在案例2中,如果输入了不存在的雇员号,应当做例外处理

     

    ②有时出现异常,希望用另外的逻辑处理,比如:如果不存在就加入编号为1,名字为‘马大哈’这么一个人。

    我们看看如何完成①的要求

    相关说明:oracle事先预定义了一些例外,no_data_found就是找不到数据的例外。

    SQL> declare

      2    v_ename varchar2(8);

      3    begin

      4      select ename into v_ename from emp where empno=&empno;

      5      dbms_output.put_line('雇员名是:'||v_ename);

      6    exception

      7       when no_data_found then

      8         dbms_output.put_line('朋友,你输入的编号有误');

      9    end;

     10  /

    朋友,你输入的编号有误

    PL/SQL procedure successfully completed

     

    对该案例的细节说明:这里我们涉及到异常处理,

    异常处理的基本语法:

    exception

    when 异常的名称 then

    //对异常进行处理的代码......

    //对异常进行处理的代码......

    when 异常的名称2 then

    //对异常进行处理的代码......

    end;

     

    oracle提供的异常有:(参考pl/sql官方文档)大概23种

     

    有时可以利用异常来进行业务处理。比如:如果不存在就加入编号为1,名字为‘马大哈’这么一个人。

     

    SQL> declare

      2    v_ename varchar2(8);

      3    begin

      4      select ename into v_ename from emp where empno=&empno;

      5      dbms_output.put_line('雇员名是:'||v_ename);

      6    exception

      7       when no_data_found then

      8         dbms_output.put_line('朋友,你输入的编号有误!我帮你加入一条');

      9         insert into emp (empno,ename) values(1,'马大哈');

     10    end;

     11  /

    朋友,你输入的编号有误!我帮你加入一条

    PL/SQL procedure successfully completed

  • 相关阅读:
    微信公众号迁移配置注意点
    关于memcache 命令查看和 Telnet
    centOS 安装(光安装 和 u盘安装)
    CentOS删除自带的java,安装新java
    ubuntu常用命令
    ubuntu 的挂起与休眠
    saiku应用的调试
    数据挖掘123
    unbutu 安装java教程
    workbench的schema讲解一:(维度dimension设置的基本内容)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11114085.html
Copyright © 2011-2022 走看看