PL/SQL程序结构学习 ------from-//ddvip.com

 

从Oracle 6开始,Oracle公司在标准SQL语言的基础上发展了自己的PL/SQL(Procedural Language/SQL,过程化SQL语言)语言,将变量、控制结构、过程和函数等结构化程序设计的要素引入了SQL语言中,这样就能够编制比较复杂的 SQL程序了,利用PL/SQL语言编写的程序也称为PL/SQL程序块。
    PL/SQL程序块的主要特点如下。
    具有模块化的结构。
    使用过程化语言控制结构。
    能够进行错误处理。
    PL/SQL程序块只能在【SQL Plus】、【SQLPlus Worksheet】等工具支持下以解释型方式执行,不能编译成可执行文件,脱离支撑环境执行。

PL/SQL实例分析

    下面将为前面建立的tempuser用户建立一个名为testtable的数据表。
    在该表中有recordnumber整数型字段和currentdate时间型字段,编制一个PL/SQL程序完成向该表中自动输入100个记录,要求recordnumber字段从1到100,currentdate字段为当前系统时间。
    (1)前面建立的tempuser用户默认的表空间为USERS,因此,要想使该用户能够使用表空间建立数据方案对象,必须首先给其赋予名为“RESOURCE”的角色。
    (2)以system用户、SYSDBA身份登录数据库后,在【企业管理器】中按照修改用户的步骤进行操作,直到出现如图9.1所示的编辑用户的【角色】选项卡。
    在【可用】下拉列表框中选择“RESOURCE”,单击按钮将其添加到【已授予】列表框中。【默认值】单元格被选中,单击“确定”按钮。

    (3)读者也可以在【SQLPlus Worksheet】中直接执行如下SQL代码完成上述操作。
    ―――――――――――――――――――――――――――――――――――――
    GRANT "RESOURCE" TO "TEMPUSER";
    ALTER USER "TEMPUSER" DEFAULT ROLE ALL
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\grantrole.sql。
    (4)按照创建数据表的操作步骤进行,直到出现如图9.2所示的创建表的【一般信息】选项卡。
    在【名称】文本框中输入“testable”。
    在【方案】下拉列表框中选择“tempuser”。
    在【表空间】下拉列表框中选择“users”。
    选择【表】/【标准】单选钮。
    选择【定义列】单选钮。
    在【表列定义区】中输入两个数据列的定义。
    完成设置后单击按钮。

    (5)读者也可以在【SQLPlus Worksheet】中直接执行如下SQL代码完成上述操作。
    ―――――――――――――――――――――――――――――――――――――
    CREATE TABLE "TEMPUSER"."TESTTABLE" ("RECORDNUMBER" NUMBER(4) NOT
        NULL, "CURRENTDATE" DATE NOT NULL)
        TABLESPACE "USERS"
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\createtesttable.sql。
    (6)以tempuser用户身份登录【SQLPlus Worksheet】,执行下列SQL代码完成向数据表tempuser.testable中输入100个记录的功能。执行结果如图9.3所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        maxrecords constant int:=100;
        i int :=1;
    begin
        for i in 1..maxrecords loop
           insert into tempuser.testtable(recordnumber,currentdate)
           values(i,sysdate);
        end loop;
    dbms_output.put_line('成功录入数据!');
    commit;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\inserttesttable.sql。

    (7)在【SQLPlus Worksheet】中执行下列语句,查询插入的数据,结果如图9.4所示。
    ―――――――――――――――――――――――――――――――――――――
    select * from tempuser.testtable;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章\selecttesttable.sql。

    对完成上述数据插入过程的PL/SQL程序的分析如表9.1所示。
表9.1 PL/SQL实例代码分析

程序代码 说明
set serveroutput on 允许服务器输出
declare 定义部分标识
maxrecords constant int:=100; 定义maxrecords为整型常量100
i int :=1; 定义i为整型值变量,初值为1
Begin 执行部分标识
for i in 1..maxrecords loop i从1循环到maxrecords
Insert into tempuser.testtable(recordnumber,currentdate) values (i,sysdate); 向数据表中插入数据
end loop; 结束循环
dbms_output.put_line('成功录入数据!'); 显示成功录入数据信息
commit; 提交结果
end; 结束执行

     表中的sysdate为系统时间函数;dbms_output为系统默认的程序包,put_line为包中定义的方法,功能是输出信息;在Oracle 中,所有对数据库数据的更改并没有直接操作数据库,而是放在叫工作区的内存里,只有在commit语句执行后,才发生永久更改。

PL/SQL程序结构

    结合上述实例进行分析,完整的PL/SQL程序结构可以分为3个部分。
    1. 定义部分
    以Declare为标识,在该部分中定义程序中要使用的常量、变量、游标和例外处理名称,PL/SQL程序中使用的所有定义必须在该部分集中定义,而在高级语言里变量可以在程序执行过程中定义。
    2. 执行部分
    以begin为开始标识,以end为结束标识。该部分是每个PL/SQL程序所必备的,包含了对数据库的操作语句和各种流程控制语句。
    3. 异常处理部分
    该部分包含在执行部分里面,以exception为标识,对程序执行中产生的异常情况进行处理。一个完整的PL/SQL程序的总体结构如图9.5所示。

    有的程序比较简单,往往省略异常处理部分。

posted on 2005-11-05 13:24 大树 阅读(260) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

公告

本期话题
能源行业资产管理咨询
资产管理信息化方案提供
资产管理相关行业培训
大型企业软件体系架构整合
资产管理信息系统实施
信息集成
信息孤岛

常用链接

留言簿(6)

随笔档案(45)

文章档案(7)

新闻档案(1)

相册

wallgate management consulting

最新随笔

搜索

最新评论

阅读排行榜

评论排行榜