- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 PL/SQL编程基础
本章主要重点:
PL/SQL概述
PL/SQL块结构
PL/SQL流程
运算符和表达式
游标
异常处理
数据库存储过程和函数
触发器
动态PL/SQL
4.1 PL/SQL概述
PL/SQL是 Procedure Language & Structured Query Language 的缩写。Oracle 的SQL是支持ANSI(American national Standards Institute)和ISO92(International Standards Organization)标准的产品。PL/SQL是对SQL语言存储过程语言的扩展。从Oracle 6以后,Oracle 的RDBMS附带了PL/SQL。它现在已经成为一种过程处理语言,简称PL/SQL(发音:pea ell sequel)。目前的PL/SQL包括两部分,一部分是数据库引擎部分;另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎。可以将这两部分称为:数据库PL/SQL和工具PL/SQL。两者的编程非常相似。都具有编程结构、语法和逻辑机制。本章主要介绍数据库PL/SQL内容。
PL/SQL的好处
对于客户/服务器环境来说,无论网络多快,只要客户端与服务器进行大量的数据交换。应用运行的效率自然就回受到影响。如果使用PL/SQL进行编程,将这种具有大量数据处理的应用放在服务器端来执行。自然就省去了数据在网上的传输时间。
减少网络传输量,开发标准的代码、隐藏实现细节、统一的和集中的方式处理工程项目,以达到重用、更好地设计数据库应用(标准化、降低维护)、更高的编程效率(productivity)
4.2 PL/SQL块结构
4.2.1 PL/SQL程序基本结构
PL/SQL块中可以包含子块;子块可以位于 PL/SQL中的任何部分;子块也即PL/SQL中的一条命令;已定义的对象有一定的作用范围。
PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。
PL/SQL块的结构如下:
Declare
/* 声明部分: 在此 声明PL/SQL用到的变量,类型及游标 */
begin
/* 执行部分: 过程及SQL 语句 , 即程序的主要部分 */
Exception
/* 执行异常部分: 错误处理 */
End;
其中 执行部分是必须的。
块可以分为四类:
无名块:动态构造,只能执行一次。
命名块:加了标号的块。
子程序:存储在数据库中的存储过程、函数及包等。当在数据库上建立好后可以在其它程序中调用它们。
触发器:当数据库发生操作时,回触发一些事件,从而自动执行相应的程序。
举例:本例是一个嵌套子块的结构:
Declare
/* 本部分可以定义变量、游标等。 */
v_name varchar2(10);
v_sql number(7,2);
Begin
/* 执行部分 */
. . . . . .
select ename, sal into v_name, v_sal from scott.emp where empno=‘7777’;
begin
/* 子块开始,也是执行语句 */
. . . . . .
EXCEPTION
/* 执行异常处理部分 */
. . . . . .
end;
EXCEPTION
/* 执行异常部分 */
. . . . . .
end; /* 本PL/SQL 程序结束 */
4.2.2 PL/SQL 程序标识符PL/SQL程序设计中的标识符定义与SQL 的标识符定义的要求相同。要求和限制有:
标识符名不能超过30字符;第一个字符必须为字母;不分大小写;不能用’-’(减号);不能是SQL保留字。
举例: 合法的标识符:
declare
v_name varchar2(20); /* 存放name 列的值 */
v_sal number(9,2); /* 存放 sal 列的值 */
. . . . . .
举例: 不合法的标识符:
declare
v-name varchar2(20); /* 存放name 列的值 使用了减号- */
2001_sal number(9,2); /* 存放 sal 列的值 数字开头 */
mine&yours number; -- 非法的标识符
debit-amount number(10,4) ; -- 非法的标识符 使用了减号-
on/off char(1); -- 非法的标识符
user id varchar2(20); -- 非法的标识符(不
文档评论(0)