PL/SQL_简介

一、PL/SQL是标准SQL的基础上增加了过程化处理的语言,是Oracle对SQL的扩充。与标准SQL相同,PL/SQL也是Oracle客户端工具(如SQL*Plus、Developer/2000等)访问服务器的操作语言。

二、PL/SQL是一种增强了过程化概念的SQL语言,它有以下一下标准SQL所没有的特征:

1、变量(包括预先定义的和自定义的)

2、控制结构(如IF-THEN-ELSE等流控制语句)

3、自定义的存储过程和函数

4、对象类型

三、PL/SQL重要特性:

块结构、变量与常量、循环结构以及游标

1、块结构:块(block)是PL/SQL程序的基本执行单元,所有的PL/SQL程序都是由块组成的,每个块完成程序中的部分工作,这样就可将程序分成多个块,一个标准的块结构如下:

DECLARE    // 块的定义部分,这里可以定义PL/SQL变量、自定义类型、游标和局部子程序。是块中的可选部分

BEGIN   //块的执行部分,这里放置一些可执行的SQL或PL/SQL语句,这是块中最重要的部分,也是块中必须有的部分,这里必须至少包含一条可执行语句

EXCEPTION  //异常处理部分,这里放置对错误进行处理的语句,是块中可选部分,

END;

其中,异常处理部分是用来报告和处理程序运行时遇到的错误,Oracle的这种将错误处理代码从程序的主题中分离出来的结构,使得程序的结构显得非常的清晰。

2、PL/SQL和数据库之间是通过变量来进行数据交换的。变量是一个存储空间,他是在程序中取出数据或传入数据给程序。

变量是在定义部分声明的,每个变量都有一个类型,这个类型决定变量应该存储什么样的数据。

例:

DECLARE

     v_Name varchar2(10);           //声明为字符型变量

    v_CurrentDate DATE;         //声明为日期型的变量

    v_Salary NUMBER(8,2);         //声明为数值型的变量

   v_LoopCounter BINARY_INTEDER;//声明为数值型的变量

   v_CurrentlyRegistered BOOLEAN; //声明为布尔型的变量

上面是oracle预定义的类型,PL/SQL也支持自定义类型,例如:下面创建一个对象类型:

CREATE OR REPLACE TYPE AuthorObj AS OBJECT (

   Author_code  char(6),

   Name             VARCHAR2(10),

    Sex                 NUMBER(1),

    birthdate        DATE,

    address           VARCHAR2(30)

);

3、常量的定义与变量的定义类似,只是在定义时必须增加一个关键字CONSTANT,并且同时给他一个值,这以后就不能再给常量进行赋值了,如:

DECLARE

           sex_male CONSTANT  INT := 1;

           sex_female CONSTANT  INT := 0;

4、PL/SQL支持多种类型的循环结构,一个循环结构用来重复的执行块中的一些语句。例:

有一张数据库表:

create table Table_A(

        num_col   NUMBER,

        char_col    VARCHAR2(60));

下面通过一个简单的循环将数字1到100插入到Table_A表中,

DECLARE

      v_LoopCounter BINARY_INTECER := 1;

       BEGIN

            LOOP

                 INSERT INTO Table_A(num_col)

                       VALUES  (v_LoopCounter);

                   v_LoopCounter :=  v_LoopCounter + 1;

                    EXIT WHEN :=  v_LoopCounter > 100;

              END LOOP;

END;

还可以用for循环结构:

 

5、游标用来查询数据库中的数据(例如SELECT语句返回的记录),并对查询的结构进行处理。

游标分为:显式游标、隐式游标

通过游标,可以对查询结果中的数据一条一条进行处理。

例:

DECLARE

       v_Name VARCHAR2(10);

       v_Salary NUMBER(8,2);

-----游标的定义

 CURSOR c_Auths IS

     SELECT name, salary

             FROM auths; 

       BEGIN

              OPEN c_Auths;            //打开游标

               LOOP                 

                      FETCH c_Auths INTO v_Name,v_Salary;           //检索一条记录

                      EXIT WHEN c_Auths%NOTFOUND;       //当所有的记录都被检索出后退出循环

          END LOOP;         //对检索出的数据进行处理

          CLOSE c_Auths; //结束处理

   END;

 

三、PL/SQL的运行:

PL/SQL程序是通过一个引擎来执行的。这个引擎安装在oracle的数据库服务器或一些客户端的应用开发工具(如Oralce Forms或Oralce Reports)中。

这个引擎执行PL/SQL程序中过程性的语句,而将SQL语句送给服务器的SQL语句执行器执行如图:

 

 

 

如果客户端工具中有PL/SQL引擎,则在执行PL/SQL块时,该引擎仅执行处理块中的过程性语句,而将SQL语句送给服务器由SQL语句执行器执行;如果客户端的工具中没有PL/SQL引擎,则客户端工具将PL/SQL块传给服务器端的PL/SQL引擎,在该引擎中处理块中的过程性语句,而将块中的SQL语句送给SQL语句执行器运行。

 

                         

 

你可能感兴趣的:(数据库,职场,休闲,PL/SQL_简介)