存储过程操作理论课程50150.pptx
《存储过程操作理论课程50150.pptx》由会员分享,可在线阅读,更多相关《存储过程操作理论课程50150.pptx(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程第第7 7章章 存储过程操作存储过程操作 主编:刘志成主编:刘志成2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程本章学习导航本章学习导航本章学习导航本章学习导航本章学习导航本章学习导航 2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程本章学习要点本章学习要点本章学习要点本章学习要点(1)存储过程概述。)存储过程概述。(2)OEM创建、调用、查看、修改和删除创建、调用、查看、修改和删除存
2、储存储过程过程。(3)PL/SQL创建、调用、查看、修改和删除创建、调用、查看、修改和删除存储过程存储过程。(4)创建、调用和删除)创建、调用和删除函数函数。(5)定义包头、包体定义包头、包体。(6)包包中定义函数和存储过程。中定义函数和存储过程。建议课时:建议课时:12课时课时2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常量和变量常量和变量-常量常量l常量是指在程序运行期间其值不能改变的量。常量是指在程序运行期间其值不能改变的量。【例例1-1】定义常量定义常量PI(3.14
3、159)。)。-设置打开控制台输出SET SERVEROUTPUT ON-声明一个变量或常量DECLARE PI CONSTANT NUMBER(6,5):=3.14159;BEGIN-输出指定变量或常量的值 DBMS_OUTPUT.PUT_LINE(PI=|PI);END;其中,PUT_LINE过程中使用的过程中使用的“|”用于连接输出内容的两部分用于连接输出内容的两部分 2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常量和变量常量和变量-变量变量l变量是指由程序读取或赋值的
4、存储单元,用于临时存储数据,变量中变量是指由程序读取或赋值的存储单元,用于临时存储数据,变量中的数据可以随着程序的运行而发生变化。每个变量都必须有一个特定的的数据可以随着程序的运行而发生变化。每个变量都必须有一个特定的数据类型,可以是系统数据类型,也可以是自定义数据类型。数据类型,可以是系统数据类型,也可以是自定义数据类型。【例例1-2】编写计算圆面积的编写计算圆面积的PL/SQL块。块。SET SERVEROUTPUT ONDECLARE PI CONSTANT NUMBER(6,5):=3.14159;-声明两个变量并赋初值 v_radiu FLOAT:=2;v_area FLOAT;BE
5、GIN v_area:=PI*v_radiu*v_radiu;DBMS_OUTPUT.PUT_LINE(Area=|v_area);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 条件结构条件结构-IF-IF结构结构【例例1-3】使用简单使用简单IF结构判断一个整数的奇偶性。结构判断一个整数的奇偶性。SET SERVEROUTPUT ONDECLARE v_number INTEGER:=518;BEGIN IF MOD(v_number,2)=0 THEN DBMS_O
6、UTPUT.PUT_LINE(v_number|是一个偶数);ELSE DBMS_OUTPUT.PUT_LINE(v_number|是一个奇数);END IF;END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 条件结构条件结构-IF-IF结构结构【例例1-4】使用复使用复杂杂IF结构输出结构输出3个个整数之中的最大者。整数之中的最大者。2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQ
7、LPL/SQL编程编程 条件结构条件结构-CASE-CASE结构结构【例例1-5】使用单一选择使用单一选择符进行等值比较的符进行等值比较的CASE结构将百分制成绩转换为结构将百分制成绩转换为5分制成绩。分制成绩。2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 条件结构条件结构-CASE-CASE结构结构【例例1-6】使用多种条件使用多种条件进行非等值比较的进行非等值比较的CASE结构将百分制成绩转换为结构将百分制成绩转换为5分制成绩分制成绩。2023/5/22O Or ra ac
8、 cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 循环结构循环结构-While-While循环循环【例例1-7】使用使用WHILE循环求循环求1到到100的所有正整数之和。的所有正整数之和。SET SERVEROUTPUT ONDECLARE i INTEGER:=1;s INTEGER:=0;BEGIN WHILE i100;END LOOP;DBMS_OUTPUT.PUT_LINE(1+2+.+100=|s);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教
9、程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 循环结构循环结构-For-For循环循环使用FOR循环不需要显式声明循环控制变量的类型,而由PL/SQL隐式提供。默认情况下,循环控制变量从下限值开始,每次循环结束后自动增加1,直至超过上限值为止;若指定REVERSE参数,则循环控制变量从上限值开始,每次循环结束后自动减1,直至低于下限值为止。2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 循环结构循环结构-For-For循环循环【例1-9】使用不带REVERSE
10、参数的FOR循环求1到100的所有正整数之和。【例1-10】使用带REVERSE参数的FOR循环求1到100的所有正整数之和。2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 循环结构循环结构-跳转语句跳转语句【例1-11】借助于GOTO跳转语句输出10以内第一个能同时被2和3整除的正整数。SET SERVEROUTPUT ONDECLARE num INTEGER:=1;BEGIN WHILE num=10 LOOP IF MOD(num,2)=0 AND MOD(num,3)=
11、0 THEN GOTO display;END IF;num:=num+1;END LOOP;DBMS_OUTPUT.PUT_LINE(num);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-数学函数数学函数2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-数学函数数学函数【例例1-12】测试常用数学函数的
12、用法。测试常用数学函数的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(-8的绝对值为的绝对值为|ABS(-8);DBMS_OUTPUT.PUT_LINE(8的的3次幂为次幂为|POWER(8,3);DBMS_OUTPUT.PUT_LINE(8的平方根为的平方根为|SQRT(8);DBMS_OUTPUT.PUT_LINE(3.14159四舍五入到小数点后四舍五入到小数点后3位为位为|ROUND(3.14159,3);DBMS_OUTPUT.PUT_LINE(e=|EXP(1);DBMS_OUTPUT.PUT_LINE(大于或等于大于或等于-32
13、.5的最小整数为的最小整数为|CEIL(-32.5);DBMS_OUTPUT.PUT_LINE(小于或等于小于或等于-32.5的最大整数为的最大整数为|FLOOR(-32.5);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-字符串函数字符串函数2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-字符串函数字符
14、串函数【例例1-13】测试常用字符串函数的用法。测试常用字符串函数的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(a的的ACSCII值为值为|ASCII(a);DBMS_OUTPUT.PUT_LINE(ACSCII值值97对应的字符为对应的字符为|CHR(97);DBMS_OUTPUT.PUT_LINE(字符串字符串Hunan Railway的长度的长度为为|LENGTH(Hunan Railway);DBMS_OUTPUT.PUT_LINE(将字符串将字符串Hunan Railway全部全部转换为大写形式为转换为大写形式为|UPPER(Hu
15、nan Railway);DBMS_OUTPUT.PUT_LINE(将字符串将字符串Hunan Railway全部全部转换为小写形式为转换为小写形式为|LOWER(Hunan Railway);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-日期函数日期函数2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-日
16、期函数日期函数【例例1-14】测试常用日期函数的用法。测试常用日期函数的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(当前日期时间为|SYSDATE);DBMS_OUTPUT.PUT_LINE(当前月份的最后一天的日期为|LAST_DAY(SYSDATE);DBMS_OUTPUT.PUT_LINE(字符串对应日期|TO_DATE(2007-5-24,YYYY-MM-DD);DBMS_OUTPUT.PUT_LINE(两个日期相差的月份|MONTHS_BETWEEN(14-4月-99,SYSDATE);END;2023/5/22O Or ra a
17、c cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-转换函数转换函数2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 常用系统函数常用系统函数-转换函数转换函数【例例1-15】测试常用转换函数的用法。测试常用转换函数的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(转换为数据库字符集的转换为数据库字符集的ASCII字符串为字符串为|
18、ASCIISTR(湖南铁道湖南铁道);DBMS_OUTPUT.PUT_LINE(将当前日期转换为字符串类型数据为将当前日期转换为字符串类型数据为|CAST(SYSDATE AS VARCHAR2);DBMS_OUTPUT.PUT_LINE(将字符串转换为将字符串转换为ROWID数据类型为数据类型为|CHARTOROWID(AAAAFdl/#$);DBMS_OUTPUT.PUT_LINE(字符集转换字符集转换|CONVERT(湖南铁道湖南铁道,US7ASCII,WE8ISO8859P1);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程
19、程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程%TYPE%TYPE变量变量Oracle 9i以后的版本提供了以后的版本提供了%TYPE定义方法。这样当数据表的字定义方法。这样当数据表的字段类型修改后,段类型修改后,PL/SQL程序中相应变量的类型也自动修改。程序中相应变量的类型也自动修改。【例例1-16】使用使用%TYPE获取查询的商品的基本信息。获取查询的商品的基本信息。SET SERVEROUTPUT ONDECLARE v_gId Goods.g_ID%TYPE;v_gName Goods.g_Name%TYPE;v_gPrice Goods.g_Price%TYPE;v
20、_gNumber Goods.g_Number%TYPE;BEGIN SELECT g_ID,g_Name,g_Price,g_Number INTO v_gId,v_gName,v_gPrice,v_gNumber FROM SCOTT.Goods WHERE g_ID=010003;dbms_output.put_line(v_gId|/|v_gName|/|v_gPrice|/|v_gNumber);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程%ROWTYPE%R
21、OWTYPE变量变量与与%TYPE类型类似,也可以在不确定查询列的类型的情况下,使类型类似,也可以在不确定查询列的类型的情况下,使用用%ROWTYPE类型的变量存储查询的一行数据类型的变量存储查询的一行数据。【例例1-17】使用使用%ROWTYPE获取查询的商品基本信息。获取查询的商品基本信息。SET SERVEROUTPUT ONDECLARE v_GoodRecord Goods%ROWTYPE;BEGIN SELECT*INTO v_GoodRecord FROM SCOTT.Goods WHERE g_ID=010003;dbms_output.put_line(v_GoodRecor
22、d.g_ID);dbms_output.put_line(v_GoodRecord.g_Name);dbms_output.put_line(v_GoodRecord.g_Price);dbms_output.put_line(v_GoodRecord.g_Number);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 异常处理异常处理为了提高应用程序的健壮性,开发人员必须考虑程序可能出现的各为了提高应用程序的健壮性,开发人员必须考虑程序可能出现的各种错误,并进行相应的处
23、理。在种错误,并进行相应的处理。在Oracle中,为了处理中,为了处理PL/SQL应用程应用程序的各种错误,序的各种错误,Oracle提供了提供了三种类型三种类型的异常。的异常。(1)预定义异常:用于处理常见的)预定义异常:用于处理常见的Oracle错误错误(2)非预定义异常:用于处理预定义异常所不能处理的)非预定义异常:用于处理预定义异常所不能处理的Oracle错错误误(3)自定义异常:用于处理于)自定义异常:用于处理于Oracle错误无关的其他情况错误无关的其他情况2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用
24、使用PL/SQLPL/SQL编程编程 异常处理异常处理系统预定义异常系统预定义异常2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 异常处理异常处理系统预定义异常系统预定义异常【例例1-18】对对Goods表中的插入的重复商品号进行异常处理(使表中的插入的重复商品号进行异常处理(使用预定义异常)。用预定义异常)。SET SERVEROUTPUT ONBEGIN INSERT INTO SCOTT.Goods VALUES(010001,诺基亚6700 Slide,01,1500,0
25、.9,20,to_date(2009-06-01,yyyy-mm-dd),pImage/010001.gif,热点,彩屏,1600万色,TFT,240320像素,2.2英寸);EXCEPTIONWHEN DUP_VAL_ON_INDEX THENdbms_output.put_line(捕获到DUP_VAL_ON_INDEX异常);dbms_output.put_line(重复的商品编号);END;2023/5/22O Or ra ac cl le e数数据据库库管管理理与与应应用用实实例例教教程程课堂案例课堂案例11使用使用PL/SQLPL/SQL编程编程 异常处理异常处理非预定义异常非预定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 操作 理论 课程 50150
限制150内