TraceLife

真正的幸福,在于对平淡生活的热爱……

导航

PL/SQL Pragmatic Tutorials (Language Fundamentals) -- 块

Posted on 2009-08-11 18:08  hallo  阅读(431)  评论(0编辑  收藏  举报

    PL/SQL 作为 SQL 语言的扩展,主要是为了弥补 4GL 语言过程控制能力太差。它将 3GL 的过程性与 4GL 的灵活性融为一体。这里的语言基础也主要涉及 PL/SQL 中的 3GL 特性。

    PL/SQL 的过程化结构将分别详述。

        ■ PL/SQL 块结构(PL/SQL Block Structure)

        ■ PL/SQL 字符集(PL/SQL Character Set)

        ■ 标识符(Identifier)

        ■ 字面量(Literals)

        ■ 分号(“;”)定界符(Semicolon Delimiter)

        ■ 注释(Comments)

        ■ 编译指示(PRAGMA) 关键字

        ■ 标签(Labels)

 

1. PL/SQL Block Structure

   

    PL/SQL 程序的基本单位是 块(Block) 。PL/SQL 程序也都是由块来组成的。通常有如下四种块结构

● 匿名块(Anonymous Block) -- 动态生成,只能被执行一次

● 署名块(Named Block) --  标记名称的块,通常有四种形式。

        过程(Procedure)

        函数(Function)

        触发器(Trigger)

        包(Package)

1.1 匿名块(Anonymous Block)

    匿名块的语法结构如下

Anonymous Block

    Note: 方括号表示匿名块的可选部分。在 BEGIN 和 END 之间必须包含一条可执行语句。

下面是一些简单匿名块代码

★ 最简单的匿名块

BEGIN
    DBMS_OUTPUT.PUT_LINE(SYSDATE);
END

★ 带有声明的匿名块

DECLARE
    l_right_now 
VARCHAR2(9);
BEGIN
    l_right_now :
= SYSDATE;
    DBMS_OUTPUT.PUT_LINE(l_right_now);
END;

★ 带有异常处理的匿名块

With Exception

    通常匿名块执行一系列的语句,然后终止,其行为类似于过程。事实上,匿名块就是一个 匿名过程(Anonymous Procedures)

1.2 署名块(Named Block)

    署名块包括了四种结构,过程(Procedure)函数(Function)触发器(Trigger) 和 包(Package)

1.2.1 过程(Procedure) 

    创建过程的语法结构如下 

Create Procedure

1.2.2 函数(Function)

    创建函数的语法结构如下

Create Function

    Note: 由于 Oracle 允许在 SQL 语句中调用函数,所以函数的 HEADER 部分较之过程包含有更多的可选组件。

1.2.3 触发器(Trigger)

    触发器(Trigger) 的结构类似于过程或函数,都是拥有声明、执行和异常处理的带名 PL/SQL 块。

    创建触发器的语法结构如下
★ 创建 DML 触发器

Create DML Trigger

★ 创建 DDL 触发器

Create DDL Trigger


1.2.4 包(Package)

    包(Package) 是一个将相关对象进行打包处理,形成一个独立的 PL/SQL 结构。通常包含两个分离的部件 包规范(Package Specification)包主体(Package Body)

    创建包规范的语法结构如下

Create Package

    Note: 包规范(Package Specification) = 包头(Package Header)