PL/SQL简介

发表时间:2017-05-11 16:56:04 浏览量( 15 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

今天我们开始主要学习PL/SQL语言,作为一名java成员人员至少要了解一门数据库编程语言,这里我们就以oracle的PL/SQL语言来学习。这两天的课程也仅仅只是PL/SQL语言的入门,我们不是要把大家培养成为专业的Oracle的DBA,如果大家有兴趣可以自己阅读PL/SQL语言的相关书籍。

一、什么是PL/SQL语言

1、什么是PL/SQL语言

PL/SQL即过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,PL/SQL也是一种程序语言,PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。PL/SQL 只有 Oracle 数据库才有。其他数据库是不支持PL/SQL语言的。

PL/SQL语言是一种应用开发语言,和普通的编程语言,比如java语言,它也支持变量定义,循环,条件分支处理。而且它将SQL的数据操纵功能与过程化语言数据处理功能结合起来。同时支持高级语言的块操作,与数据库核心的数据类型集成,使SQL 的程序设计效率更高。

2、PL/SQL语言的优点

通过多条SQL语句实现功能时,每条语句都需要在客户端和服务端传递,而且每条语句的执行结果也需要在网络中进行交互,占用了大量的网络带宽,消耗了大量网络传递的时间,而在网络中传输的那些结果,往往都是中间结果,而不是我们所关心的。

而使用PL/SQL程序是因为程序代码存储在数据库中,程序的分析和执行完全在数据库内部进行,用户所需要做的就是在客户端发出调用PL/SQL的执行命令,数据库接收到执行命令后,在数据库内部完成整个PL/SQL程序的执行,并将最终的执行结果返馈给用户。

二、PL/SQL块简介

PL/SQL 块是构成 PL/SQL 程序的基本单元,将逻辑上相关的声明和语句组合在一起。PL/SQL 分为三个部分,声明部分、可执行部分和异常处理部分,定义参考格式如下:

   [DECLARE

    declarations]

   BEGIN

    executable statements

    [EXCEPTION

    handlers]

   END;

三、变量和常量

PL/SQL 块中可以使用变量和常量,在声明部分声明,使用前必须先声明,声明时必须指定数据类型,每行声明一个标识符,在可执行部分的 SQL语句和过程语句中使用,声明变量和常量的语法:

identifier [CONSTANT] datatype [NOT NULL]  [:= | DEFAULT expr];

给变量赋值有两种方法:

使用赋值语句 := 

使用 SELECT INTO 语句。

示例:

declare  --声明变量
   wid int:=100;
    hei number(7,2):=12.3;
   pass varchar2(100);
   username varchar2(100);--获得用户输入
begin
end;

用于引用数据库列的数据类型,以及表示表中一行的记录类型 l属性类型有两种:

  • %TYPE  -  引用变量和数据库列的数据类型。

  • %ROWTYPE  -  提供表示表中一行的记录类型。

使用属性类型的优点:不需要知道被引用的表列的具体类型,如果被引用对象的数据类型发生改变,PL/SQL 变量的数据类型也随之改变。

示例:

--由用户输入商品的id,打印出商品的名称 商品价格
declare
  gname GOODS.GOODS_NAME%TYPE;--参考表的属性的类型
  gcash GOODS.CASH%TYPE;
  gid GOODS.GOODS_ID%TYPE ;
begin
   gid:=&gd;
   select GOODS_NAME,CASH into gname,gcash from GOODS where GOODS_ID=gid;
   dbms_output.put_line(gname||':'||gcash);
end;

四、异常模块

在运行程序时出现的错误叫做异常,发生异常后,语句将停止执行,控制权转移到 PL/SQL 块的异常处理部分,异常有两种类型:

  • 预定义异常 -  当 PL/SQL 程序违反 Oracle 规则或超越系统限制时隐式引发。

  • 用户定义异常  -  用户可以在 PL/SQL 块的声明部分定义异常,自定义的异常通过 RAISE 语句显式引发。

示例:

declare  --声明变量
   wid int:=100;
    hei number(7,2):=12.3;
   pass varchar2(100);
   username varchar2(100);--获得用户输入
begin
    dbms_output.put_line(username);
    pass:='abc';
    dbms_output.put_line(pass);
    dbms_output.put_line('area:'||(wid*hei));--字符串的链接
    exception
       when others then
            dbms_output.put_line('error');
end;