第23讲plsql编程_另

上传人:命****币 文档编号:106221139 上传时间:2019-10-14 格式:PPT 页数:130 大小:870.01KB
返回 下载 相关 举报
第23讲plsql编程_另_第1页
第1页 / 共130页
第23讲plsql编程_另_第2页
第2页 / 共130页
第23讲plsql编程_另_第3页
第3页 / 共130页
第23讲plsql编程_另_第4页
第4页 / 共130页
第23讲plsql编程_另_第5页
第5页 / 共130页
点击查看更多>>
资源描述

《第23讲plsql编程_另》由会员分享,可在线阅读,更多相关《第23讲plsql编程_另(130页珍藏版)》请在金锄头文库上搜索。

1、PL/SQL, Oracle在何处使用PL/SQL。 PL/SQL字符集。 变量和P L/SQL保留字。 常用数据类型。 PL/SQL的组件。 游标。 编码规范。 PL/SQL注释。 编译错误处理。 用于Internet的PL/SQL。,Oracle在何处使用PL/SQL,在使用Oracle的存储过程中,数据库触发器、打包和函数都要用PL/SQL编写代码。因此,如果不了解PL/SQL就不可能深入掌握Oracle。,PL/SQL字符集,合法字符 算术运算符 关系运算符 其他符号,合法字符, 所有大小写字母。 数字09。 符号:( ) +* /=!;:. % “# $ & _ | ? 。 其中一些

2、字符用于编程,另一些用作算术运算操作符(除法、加法、幂等)及关系运算符(等于和不等于)。,算术运算符,下面列出了PL/SQL中常用的算术运算符,如果用户使用过其他高级程序设计语言,想必不会陌生。 运算符意义 +加法 减法 *乘法 /除法 *幂,关系运算符,下面列出了PL/SQL中常用的关系运算符,如果用户使用过其他程序设计语言,一定见过这些符号: 运算符意义 不等于 !=不等于 =不等于 大于 =等于,其他符号,PL/SQL为支持编程,还使用其他符号。下边列出了部分符号,它们是最常用的,也是使用PL/SQL的所有用户都必须了解的。 ()列表分隔(Jones,Roy,Abramson) ;语句结

3、束Procedure_name(arg1,arg2); .项分隔(在例子中,分隔account与table_name)Select * from account.table_name; 字符串界定符if var1=SANDRA :=赋值Rec_read:=rec_read+1 |并置Full_name:=Nahtan|Yebba -注释符This is a comment /*与*/注释定界符/*This,too,is a comment*/,变量,变量是PL/SQL中用来处理数据项所用的名字。程序员根据下列规则选择变量名称: 变量必须以字母(AZ)开头。 其后跟可选的一个或多个字母、数字(0

4、9)或特殊字符$、#或_。 变量长度不超过30个字符。 变量名中不能有空格。 23_skidoo 不合法 必须以字母起头 Nature_trali 合法 nature-trali 不合法 特殊字符只能是$#_,变量合法性判断,loveboat不合法 不能含空格 a_very_insignificant_variable_name不合法 多于30个字符 me_and$you 合法 lots_of_$ 合法 23不合法 未用字母起头,保留字,保留字可视为PL/SQL版权所有的字符串。在定义变量名时,用户不能使用这些保留字。 例如,词“loop”在PL/SQL中有特殊含义,因此下列代码是非法的: d

5、eclare Employee varchar2(30); Loop number; 保留字不能用作变量名。尽管我们不推荐,但如果用户愿意,也可以连接两个保留字形成变量名(如loop_varchar2)。,常用数据类型,到目前为止,讨论了在PL/SQL中编程时允许使用的字符、变量的命名和保留字。下面着重讨论数据类型。PL/SQL程序用于处理和显示多种类型的数据。和所有计算机软件一样,Oracle也将数据类型分成大量的子类。例如:数可分为整型(不允许有小数)和小数(有一位小数 或多位小数)类。PL/SQL支持多种数据类型,本节讨论代码中最常用并且最实用的数据类型。 Varchar2 Number

6、 Date Boolean,Varchar2,Varchar2为可变长的字母数字数据类型。在PL/SQL中,varchar2的最大长度为32767字节。 在declare部分,其定义以分号(;)结束,所有varchar2变量的定义类似于下面的定义: variable_name varchar2(max_length); 括号中的长度值为本变量的最大长度且必须是正整数,如: vc_field varchar2(10); 在定义变量时,可以同时对其进行初始化,格式为: vc_field varchar2(10):=STARTVALUE;,Number,number类型数据可用来表示所有的数值数据,

7、说明格式为: num_field number(precision,scale); 其中,precision可以有138个数字位,而scale表示在precision位数字中小数点后的数字位数,下面的定义: num_fieldnumber(12,2); 表示num_field是一个整数部分最多10位、小数部分最多2位的变量。,Date,此数据类型用于保存固定长度的日期值,date变量的说明为: date_field date; 在缺省时,Oracle以DD-MON-YY格式显示日期。因此,2004年9月9日显示为09-SEP-04。 PL/SQL中编程处理日期必须使用这种格式。是否可以说用户必

8、须用数据库缺省的日期格式,除非用户用TO_CHAR或TO_DATE?是否能提醒用户用自己的TO_DATE/TO_CHAR定义的格式而不依赖于缺省的日期格式?那将使应用程序更方便和更少地依赖于init.ora的设置。 提示:Oracle中还有DD-MON-RR的日期格式,用来表示4位年份以确保Oracle不会省去两位纪元数。,Boolean,这种数据类型只有两个值:true或false。在使用boolean变量时,如果测试结果为true,则做某事,否则做另外的事。例如,如果试图考察某公司是否分发了一个10KB的2000年年度预算表,可用boolean变量。若该公司分发了此表,则该变量值为true

9、。,PL/SQL的组件,块结构编码。 变量声明。 控制结构,包括程序控制,if逻辑结构以及循环结构。 异常处理。 空操作结构。,块结构,PL/SQL程序是由独立的变量声明、执行代码和异常处理等部分代码块写成的。PL/SQL可以作为一个命名的子程序存放在数据库中,或直接在SQL*Plus窗口中作为一个匿名的块编码。 当在数据库中存储PL/SQL时,子程序包括存储单元命名的头部分、程序类型的声明以及可选的in、out和in out参数的定义。只是可执行部分定义的begin和end语句是固定的,declare和exception部分是可选的。 下面是在一个无名块和一个存储过程的例子。,无名块,-无名

10、块 Declare . begin . end;,存储过程,-存储过程 Create or replace procedure _name as -声明部分自动跟着as语句而不需要编码 begin exception end; /,嵌套,PL/SQL块可以嵌套,在主begin/end块中可以产生许多begin/end块。我们演示怎样控制错误发生时的程序流程以后,PL/SQL的好处将变得更明显。这将在 “异常”部分讨论。甚至在被嵌套的块中可以接受的嵌套块或者在外部块中有许多begin/end块。,Create or replace procedure calculate_rebate(pharm

11、acy_id in number) as begin begin exception end; exception end; /,自主的事务处理,从Oracle8i开始,Oracle已经引进了自主的事务处理。在PL/SQL的早期版本中,在子程序中的commit和rollback执行同一个关于从初始化程序单元到任何事务的操作。通过在一个匿名PL/SQL块、过程、函数或者数据库触发器的声明部分增加一个自主的事务语句,保证一个在那个块的commit或rollback语句将对从初始化块开始的未完成的事务没有影响。一个匿名块中的自主事务声明只能由第一个声明部分组成,自主事务声明不允许任何嵌套。,创建一个

12、自主事务块,下面的例子说明了怎样创建一个自主事务块: declare Prama autonomous_transaction; begin . end; /,声明部分,此PL/SQL块用于定义变量。如果用户熟悉COBOL语言,declare段就相当于COBOL中的工作存储区。在declare段中,可找到前面讲过的常用数据类型以及下一节要介绍的cursor(游标)变量类型。下面的程序是一个过程的declare段例子。 当存储对象(命名块)产生时,declare段自动跟着as关键字。在SQL*Plus编写一个PL/SQL代码块(匿名块)时,用户必须指定DECLARE。,示例,Create or

13、replace procedure samp(i_salary in number,i_city in number) as -这是declare段;因为我们正在进行命名存储对象的编码,declare是隐含的,不需写出 Accum1 number; Accum2 number; h_date date:=sysdate;-变量能在此初始化 status_flag varchar2(1); mess_text varchar2(80); temp_buffer varchar2(1);,-下面的游标将在下面一节讨论 Cursor my_cursor is Select employee_numb

14、er,last_name,first_name From employee a,department b Where a.department_number=b.department_number And a.salaryi_salary And b.location=i_city; begin . . end; /,控制结构,控制结构是所有程序设计语言的核心。因为绝大多数系统都用于处理各种不同的情况,因此检测不同条件并加以处理是程序控制的主要部分。本节将详细介绍下列专题: 程序控制。 三种类型的if逻辑结构。 四种类型的循环结构。,1.程序控制,程序控制由其所使用的变量的状态及其从数据库中读

15、写的数据所决定。例如:设想到DMV(驾照管理部门)更换驾驶执照。进入DMV所在大楼后,读者被告知“更换执照请到12-G房间”。而在12-G房间,又得到指示“用现金或保付支票(Certified check)付帐的在1台及2台办理,其他付帐方式在315台办理”。决策从“我要到那里?”就开始了,在DMV大楼内做出决策的程序控制如后所示。,程序控制决策,到此办理驾驶执照 YES=5 NO=2 到此处更换驾驶执照 YES=7 NO=3 到此考驾驶执照 YES=6 NO=4 噢,走错了地方 13 到12-A房间办理驾驶执照 13 到12-B房间办理驾驶执照 13 到12-G房间 8 用现金或保付支票付帐

16、 YES=10 NO=9 用支票或信用卡付帐 YES=11 NO=12 用现金或保付支票付帐,办理更换驾驶执照有关手续 13 用支票或信用卡付帐,办理更换驾驶执照有关手续 13 无钱付帐 13 离开大楼,2.if逻辑结构,在编写计算机程序时,有各种各样的情况需要处理。这时必须测试条件,如果测试值为true,做某事;为FALSE,做另一件不同的事。PL/SQL提供三种if逻辑结构供用户测试true/false以完成相应的工作。在大多数计算机程序中,多行代码测试一个变量的值,再根据测试结果执行一种或多种操作。在日常生活中,也要不断地进行判断,这也正是用户用PL/SQL进行编程的现实依据。,(1)if-then,这个结构用于测试一个简单条件。如果该条件为true,则执行一行或多行代码;如果条件测试为false,则程序控制转到测试后面的代码。下面的代码说明PL/SQL这个逻辑的实现: If var110 then

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号