Oracle第章存储过程操作_第1页
Oracle第章存储过程操作_第2页
Oracle第章存储过程操作_第3页
Oracle第章存储过程操作_第4页
Oracle第章存储过程操作_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章存储过程操作主编:刘志成本章学习导航本章学习导航本章学习要点(1)存储过程概述。(2)OEM创建、调用、查看、修改和删除存储过程。(3)PL/SQL创建、调用、查看、修改和删除存储过程。(4)创建、调用和删除函数。(5)定义包头、包体。(6)包中定义函数和存储过程。建议课时:12课时课堂案例1——使用PL/SQL编程常量和变量--常量常量是指在程序运行期间其值不能改变的量。

【例1-1】定义常量PI(3.14159)。--设置打开控制台输出SETSERVEROUTPUTON--声明一个变量或常量DECLAREPICONSTANTNUMBER(6,5):=3.14159;BEGIN--输出指定变量或常量的值

DBMS_OUTPUT.PUT_LINE('PI='||PI);END;

其中,PUT_LINE过程中使用的“||”用于连接输出内容的两部分

课堂案例1——使用PL/SQL编程常量和变量--变量变量是指由程序读取或赋值的存储单元,用于临时存储数据,变量中的数据可以随着程序的运行而发生变化。每个变量都必须有一个特定的数据类型,可以是系统数据类型,也可以是自定义数据类型。

【例1-2】编写计算圆面积的PL/SQL块。SETSERVEROUTPUTONDECLAREPICONSTANTNUMBER(6,5):=3.14159;--声明两个变量并赋初值

v_radiuFLOAT:=2;v_areaFLOAT;BEGINv_area:=PI*v_radiu*v_radiu;DBMS_OUTPUT.PUT_LINE('Area='||v_area);END;课堂案例1——使用PL/SQL编程条件结构-IF结构【例1-3】使用简单IF结构判断一个整数的奇偶性。SETSERVEROUTPUTONDECLAREv_numberINTEGER:=518;BEGIN

IFMOD(v_number,2)=0THENDBMS_OUTPUT.PUT_LINE(v_number||'是一个偶数');

ELSEDBMS_OUTPUT.PUT_LINE(v_number||'是一个奇数');ENDIF;END;课堂案例1——使用PL/SQL编程条件结构-IF结构【例1-4】使用复杂IF结构输出3个整数之中的最大者。课堂案例1——使用PL/SQL编程条件结构-CASE结构【例1-5】使用单一选择符进行等值比较的CASE结构将百分制成绩转换为5分制成绩。课堂案例1——使用PL/SQL编程条件结构-CASE结构【例1-6】使用多种条件进行非等值比较的CASE结构将百分制成绩转换为5分制成绩。课堂案例1——使用PL/SQL编程循环结构-While循环【例1-7】使用WHILE循环求1到100的所有正整数之和。SETSERVEROUTPUTONDECLARE iINTEGER:=1; sINTEGER:=0;BEGIN

WHILEi<=100LOOP s:=s+i; i:=i+1;

ENDLOOP; DBMS_OUTPUT.PUT_LINE('1+2+...+100='||s);END;课堂案例1——使用PL/SQL编程循环结构-Loop循环【例1-8】使用LOOP循环求1到100的所有正整整数之和。。SETSERVEROUTPUTONDECLAREiINTEGER:=1;sINTEGER:=0;BEGINLOOPs:=s+i;i:=i+1;EXITWHENi>100;ENDLOOP;DBMS_OUTPUT.PUT_LINE('1+2+...+100='||s);END;课堂案例1——使用PL/SQL编程循环结构-For循环使用FOR循环不需要要显式声明明循环控制制变量的类类型,而由由PL/SQL隐式提供。。默认情况况下,循环环控制变量量从下限值值开始,每每次循环结结束后自动动增加1,直至超过过上限值为为止;若指指定REVERSE参数,则循循环控制变变量从上限限值开始,,每次循环环结束后自自动减1,直至低于于下限值为为止。课堂案例1——使用PL/SQL编程循环结构-For循环【例1-9】使用不带REVERSE参数的FOR循环求1到100的所有正整整数之和。。【例1-10】】使用带REVERSE参数的FOR循环求1到100的所有正整整数之和。。课堂案例1——使用PL/SQL编程循环结构-跳转语句【例1-11】】借助于GOTO跳转语句输输出10以内第一个个能同时被被2和3整除的正整整数。SETSERVEROUTPUTONDECLAREnumINTEGER:=1;BEGINWHILEnum<=10LOOPIFMOD(num,2)=0ANDMOD(num,3)=0THENGOTOdisplay;ENDIF;num:=num+1;ENDLOOP;<<display>>DBMS_OUTPUT.PUT_LINE(num);END;课堂案例1——使用PL/SQL编程常用系统函函数-数学函数课堂案例1——使用PL/SQL编程常用系统函函数-数学函数【例1-12】】测试常用数数学函数的的用法。SETSERVEROUTPUTONBEGINDBMS_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.5的最小整数数为'||CEIL(-32.5));DBMS_OUTPUT.PUT_LINE('小于或等于于-32.5的最大整数数为'||FLOOR(-32.5));END;课堂案例1——使用PL/SQL编程常用系统函函数-字符串函数数课堂案例1——使用PL/SQL编程常用系统函函数-字符串函数数【例1-13】】测试常用字字符串函数数的用法。。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('a的ACSCII值为'||ASCII('a'));DBMS_OUTPUT.PUT_LINE('ACSCII值97对应的字符符为'||CHR(97));DBMS_OUTPUT.PUT_LINE('字符串"HunanRailway"的长度为'||LENGTH('HunanRailway'));DBMS_OUTPUT.PUT_LINE('将字符串"HunanRailway"全部转换为为大写形式式为'||UPPER('HunanRailway'));DBMS_OUTPUT.PUT_LINE('将字符串"HunanRailway"全部转换为为小写形式式为'||LOWER('HunanRailway'));END;课堂案例1——使用PL/SQL编程常用系统函函数-日期函数课堂案例1——使用PL/SQL编程常用系统函函数-日期函数【例1-14】】测试常用日日期函数的的用法。SETSERVEROUTPUTONBEGINDBMS_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;课堂案例1——使用PL/SQL编程常用系统函函数-转换函数数课堂案例例1——使用PL/SQL编程常用系统统函数-转换函数数【例1-15】测试常用用转换函函数的用用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('转换为数数据库字字符集的的ASCII字符串为为'||ASCIISTR('湖南铁道道'));DBMS_OUTPUT.PUT_LINE('将当前日日期转换换为字符符串类型型数据为为'||CAST(SYSDATEASVARCHAR2));DBMS_OUTPUT.PUT_LINE('将字符串串转换为为ROWID数据类型型为'||CHARTOROWID('AAAAFdl/#$'));DBMS_OUTPUT.PUT_LINE('字符集转转换'||CONVERT('湖南铁道道','US7ASCII','WE8ISO8859P1'));END;课堂案例例1——使用PL/SQL编程%TYPE变量Oracle9i以后的版版本提供供了%TYPE定义方法法。这样样当数据据表的字字段类型型修改后后,PL/SQL程序中相相应变量量的类型型也自动动修改。。【例1-16】使用%TYPE获取查询询的商品品的基本本信息。。SETSERVEROUTPUTONDECLAREv_gIdGoods.g_ID%TYPE;v_gNameGoods.g_Name%TYPE;v_gPriceGoods.g_Price%TYPE;v_gNumberGoods.g_Number%TYPE;BEGINSELECTg_ID,g_Name,g_Price,g_NumberINTOv_gId,v_gName,v_gPrice,v_gNumberFROMSCOTT.GoodsWHEREg_ID='010003';dbms_output.put_line(v_gId||'/'||v_gName||'/'||v_gPrice||'/'||v_gNumber);END;课堂案例例1——使用PL/SQL编程%ROWTYPE变量与%TYPE类型类似似,也可可以在不不确定查查询列的的类型的的情况下下,使用用%ROWTYPE类型的变变量存储储查询的的一行数数据。【例1-17】使用%ROWTYPE获取查询询的商品品基本信信息。SETSERVEROUTPUTONDECLAREv_GoodRecordGoods%ROWTYPE;BEGINSELECT*INTOv_GoodRecordFROMSCOTT.GoodsWHEREg_ID='010003';dbms_output.put_line(v_GoodRecord.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;课堂案例例1——使用PL/SQL编程异常处理理为了提高高应用程程序的健健壮性,,开发人人员必须须考虑程程序可能能出现的的各种错错误,并并进行相相应的处处理。在在Oracle中,为了了处理PL/SQL应用程序序的各种种错误,,Oracle提供了三种类型型的异常。。(1)预定义义异常::用于处处理常见见的Oracle错误(2)非预定定义异常常:用于于处理预预定义异异常所不不能处理理的Oracle错误(3)自定义义异常::用于处处理于Oracle错误无关关的其他他情况课堂案例例1——使用PL/SQL编程异常处理理—系统预定定义异常常课堂案例例1——使用PL/SQL编程异常处理理—系统预定定义异常常【例1-18】对Goods表中的插插入的重重复商品品号进行行异常处处理(使使用预定定义异常常)。SETSERVEROUTPUTONBEGININSERTINTOSCOTT.GoodsVALUES('010001','诺基亚6700Slide','01',1500,0.9,20,to_date('2009-06-01','yyyy-mm-dd'),'pImage/010001.gif','热点','彩屏,1600万色,TFT,240×320像素,2.2英寸');EXCEPTIONWHENDUP_VAL_ON_INDEXTHENdbms_output.put_line('捕获到DUP_VAL_ON_INDEX异常');dbms_output.put_line('重复的商商品编号号');END;课堂案例例1——使用PL/SQL编程异常处理理—非预定义义异常使用非预预定义异异常需要要包括以以下三个个步骤::(1)在定义义部分定定义异常常名;(2)在异常常和Oracle错误之间间建立关关联(需需要使用用伪过程程EXCEPTION_INIT);(3)在异常常处理部部分捕捉捉并处理理异常。。【例1-19】删除商品品类别表表,并处处理ORA-2292错误(使使用非预预定义异异常)。。SETSERVEROUTPUTONDECLAREe_FKEXCEPTION;--1、定义部部分PRAGMAEXCEPTION_INIT(e_FK,-2292);--2、建立关关联关系系BEGINDELETESCOTT.TypesWHEREt_Name='通信商品品';EXCEPTIONWHENe_FKTHEN--3、捕捉处处理DBMS_OUTPUT.PUT_LINE('该类别已已被使用用');END;课堂案例例1——使用PL/SQL编程异常处理理—自定义异异常使用自定定义异常常时,需需要包括括以下三三个步骤骤:(1)需要在在定义部部分(DECLARE)定义异异常;(2)再执行行部分((BEGIN)触发异异常(使使用RAISE语句);;(3)在异常常处理部部分(EXCEPTION)捕捉并并处理异异常。7.2存储过程程概述视图特点点在Oracle中,可以以在数据据库中定定义子程程序,在在子程序序中将一一些固定定的操作作集中起起来,由由Oracle数据库服服务器完完成,以以完成某某个特定定的功能能。这种种子程序序称为存存储过程程(Proce-Dure)。使用用存储过过程具有有如下的的优点::(1)存储过过程在服服务器端端运行,,执行速度度快;(2)存储过过程执行行一次后后驻留在在Oracle数据库服服务器的的高速Cache中,以后后再次执执行存储储过程时时,只需需从高速速Cache中调用已已经编译译好的代代码即可可,从而而提高了了系统性性能;(3)存储过过程确保保了数据库的的安全。使用存存储过程程,可以以在禁止止用户直直接访问问应用程程序中的的某些数数据表的的情况下下,授权权执行访访问这些些数据表表的存储储过程。。(4)自动完成成需要预先先执行的的任务。。存储过过程可以以设置为为系统启启动时自自动执行行,而不不必在系系统启动动后再进进行手动动操作,,从而方方便了用用户的使使用,可可以自动动完成一一些需要要预先执执行的任任务。课堂案例2—使用OEM管理存储过程程掌握在OEM中创建存储过过程、执行存存储过程的方方法。案例学习目标标OEM中创建存储过过程、执行存存储过程。。案例知识要点点课堂案例2—使用OEM管理存储过程程案例完成步骤骤添加标题文字字(1)启动OEM后,依次选择择“方案”、、“程序”下下的“过程””,进入“过过程”页面(2)单击“创创建”按钮,,进入“创建建过程”对话话框,输入新新建存储过程程的名称up_NameByID,编写存储过过程的内容添加标题文字字教师演示讲解解课堂案例2—使用OEM管理存储过程程案例完成步骤骤-创建存储过程程添加标题文字字(1)启动OEM后,依次选择择“方案”、、“程序”下下的“过程””,进入“过过程”页面(2)单击“创创建”按钮,,进入“创建建过程”对话话框,输入新新建存储过程程的名称up_NameByID,编写存储过过程的内容添加标题文字字教师演示讲解解课堂案例2—使用OEM管理存储过程程案例完成步骤骤-查看存储过程程添加标题文字字在OEM中,进入指定定方案的“过过程”页面,,在过程列表表中选择要查查看的过程,,单击“查看看”按钮,进进入“查看过过程”页面添加标题文字字教师演示讲解解课堂案例2—使用OEM管理存储过程程案例完成步骤骤-修改存储过程程添加标题文字字(1)在OEM中,进入指定定方案的“过过程”页面,,在过程列表表中选择要查查看的过程,,单击“编辑辑”按钮,进进入“编辑过过程”页面添加标题文字字教师演示讲解解课堂案例2—使用OEM管理存储过程程案例完成步骤骤-删除存储过程程添加标题文字字(1)在OEM中,进入指定定方案的“过过程”页面,,在过程列表表中选择要查查看的过程,,单击“删除除”按钮,进进入“确认删删除”页面(2)单击“是””按钮,删除除过程up_NameByID添加标题文字字教师演示讲解解课堂案例3—使用PL/SQL管理存储过程程学习使用PL/SQL语句创建存储储过程、修改改存储过程、、编译存储过过程和执行存存储过程的方方法。案例学习目标标使用CREATE[ORREPLACE]PROCEDURE创建和修改存存储过程、使使用ALTERPROCEDURE编译存储过程程、执行存储储过程的几种种方法。案例知识要点点课堂案例3—使用PL/SQL管理存储过程程案例完成步骤骤添加标题文字字1.创建存储过过程使用PL/SQL创建存储过程程的基本语法法格式为:CREATE[ORREPLACE]PROCEDURE[用户方案.]<存储过程名>[(参数1参数模式数数据类型[,…])]IS|AS[参数1数据类型[,…]]BEGINPL/SQL语句END[存储过程名];2.执行存储过过程使用PL/SQL执行存储过程程的基本语法法格式为:[DECLARE参数1数据类型[,…]]BEGIN[EXECUTE][用户方案.]<存储过程名>[(参数1[,…])];END;添加标题文字字教师演示讲解解课堂案例3—使用PL/SQL管理存储过程程案例完成步骤骤添加标题文字字【例3-1】创建简单存储储过程,显示示当前的系统统时间。(1)定义存储过过程CREATEORREPLACEPROCEDURESCOTT.up_CurrentTimeASBEGINDBMS_OUTPUT.PUT_LINE(SYSDATE);ENDup_CurrentTime;(2)执行存储储过程BEGINSCOTT.up_CurrentTime();END;添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤添加标题文文字【例3-2】通过存储过过程添加用用户记录。。(1)定义存储储过程CREATEORREPLACEPROCEDUREup_InsertUserASBEGININSERTINTOSCOTT.UsersVALUES('88','存储过程','普通','storeproc');EXCEPTIONWHENDUP_VAL_ON_INDEXTHENDBMS_OUTPUT.PUT_LINE('重复的用编编号');WHENOTHERSTHENDBMS_OUTPUT.PUT_LINE('发生其他错错误');ENDup_InsertUser;(2)执行存储储过程EXECup_InsertUser;(3)查询Users表存储过程执执行后,使使用下列语语句查看User表的记录情情况。SELECT*FROMUSERS;添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤添加标题文文字【例3-3】创建存储过过程,根据据商品类别别编号统计计该类型所所有商品的的总数量((带IN参数)。(1)定义存储储过程CREATEORREPLACEPROCEDUREup_CountByTid(tidinVARCHAR2)AStotalNUMBER;BEGINSELECTCOUNT(*)INTOtotalFROMSCOTT.GOODSWHEREt_ID=tid;DBMS_OUTPUT.PUT_LINE(total);END;(2)执行存储储过程BEGIN--up_CountByTid('01');up_CountByTid(tid=>'01');END;up_CountByTid('01'):位置表示示法传递参参数up_CountByTid(tid=>'01'):名称表示示法传递参参数添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤添加标题文文字【例3-4】创建存储过过程,根据据商品类别别编号统计计该类型所所有商品的的总数量,,缺省情况况下统计类类别编号为为“02”的商品的总总数量(带带缺省值的的IN参数)。(1)定义存储储过程CREATEORREPLACEPROCEDUREup_CountByTid(tidinVARCHAR2DEFAULT'02')AStotalNUMBER;BEGINSELECTCOUNT(*)INTOtotalFROMSCOTT.GOODSWHEREt_ID=tid;DBMS_OUTPUT.PUT_LINE(total);END;添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤添加标题文文字【例3-5】创建存储过过程,根据据商品的编编号获得商商品的名称称和类别编编号(带IN和OUT参数)。(1)定义存储储过程CREATEORREPLACEPROCEDUREup_GetByID(gidinVARCHAR2,gnameoutGOODS.g_Name%TYPE,tidoutGOODS.t_ID%TYPE)ASBEGINSELECTg_Name,t_IDINTOgname,tidFROMSCOTT.GoodsWHEREg_ID=gid;EXCEPTIONWHENNO_DATA_FOUNDTHENgname:=null;tid:=null;ENDup_GetByID;添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤添加标题文文字(2)执行存储储过程--调用带输出出参数的存存储过程variablev_namevarchar2(50);variablev_idvarchar2(2);execup_GetByID('020001',:v_name,:v_id);printv_name;printv_id;添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤添加标题文文字【例3-5】编写存储过过程实现两两个数交换换,并在比比较两个数数的大小中中调用该存存储过程((带INOUT参数)添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤—查看存储过过程添加标题文文字【例3-6】查看用户方方案SCOTT的存储过程程up_GetByID的信息。DESCSCOTT.up_GetByID;添加标题文文字教师演示讲讲解课堂案例3—使用PL/SQL管理存储过过程案例完成步步骤—删除存储过过程添加标题文文字【例3-7】删除用户方方案SCOTT的存储过程程up_CurrentTime。DROPPROCEDURESCOTT.up_CurrentTime;添加标题文文字教师演示讲讲解课堂案例4—管理函数学习在SQLDeveloper和PL/SQL中创建函数数、调用函函数、删除除函数的方方法。案例学习目目标SQLDeveloper中创建函数数、SQLDeveloper删除函数、、PL/SQL创建函数、、PL/SQL调用函数、、PL/SQL删除函数。。案例知识要要点课堂案例4—管理函数案例完成步步骤—创建函数添加标题文文字函数(Function)与存储过过程类似,,也是组成成一个子程程序的一组组PL/SQL语句。函数数接受0个或多个输输入参数,,仅返回一一个值,返返回值的数数据类型在在创建函数数时定义。。1.使用SQLDeveloper创建函数(1)在SQLDeveloper中右击Functions选项,从快快捷菜单中中选择“NewFunction””项,将开始始创建函数数添加标题文文字教师演示讲讲解课堂案例4—管理函数案例完成步步骤—创建函数添加标题文文字(2)在打开的的“CreatePL/SQLFunction”对话框内,,指定用户户方案为SCOTT,设置函数数名称为fn_CountTypes,创建一个个统计商品品种类的函函数添加加标标题题文文字字教师师演演示示讲讲解解课堂堂案案例例4——管理理函函数数案例例完完成成步步骤骤—创建建函函数数添加加标标题题文文字字(3)单单击击““确确定定””按按钮钮,,开开始始编编辑辑函函数数的的定定义义,,以以实实现现统统计计商商品品种种类类的的函函数数。。添加加标标题题文文字字教师师演演示示讲讲解解CREATEORREPLACEFUNCTIONfn_CountTypesRETURNNUMBERASCOUNTERNUMBER;BEGINSELECTCOUNT(t_ID)INTOCOUNTERFROMSCOTT.GOODS;RETURNCOUNTER;ENDfn_CountTypes;课堂堂案案例例4——管理理函函数数案例例完完成成步步骤骤—执行行函函数数添加加标标题题文文字字(4)展展开开Functions选项项,,右右击击函函数数fn_CountTypes,从从快快捷捷菜菜单单中中选选择择““Run””项,,打打开开运运行行函函数数对对话话框框。添加加标标题题文文字字教师师演演示示讲讲解解课堂堂案案例例4——管理理函函数数案例例完完成成步步骤骤—PL/SQL创建建函函数数添加加标标题题文文字字【例4-1】】在用用户户方方案案SCOTT中创创建建函函数数fn_TOTALVALUE,它它根根据据客客户户编编号号查查询询该该客客户户的的订订单单总总金金额额。。CREATEORREPLACEFUNCTIONSCOTT.fn_TOTALVALUE(cidSCOTT.ORDERS.c_ID%TYPE)RETURNNUMBERAST_VALUENUMBER;BEGINSELECTSUM(d_Price*d_Number)INTOT_VALUEFROMSCOTT.ORDERDETAILSODJOINSCOTT.ORDERSOONOD.o_ID=O.o_IDWHEREc_ID=cid;RETURNT_VALUE;ENDfn_TOTALVALUE;添加加标标题题文文字字教师师演演示示讲讲解解课堂堂案案例例4——管理理函函数数案例例完完成成步步骤骤—调用用函函数数添加加标标题题文文字字【例4-2】】调用用用用户户方方案案SCOTT中的的函函数数DECLAREcidSCOTT.ORDERS.c_ID%TYPE;BEGINcid:='C0001';DBMS_OUTPUT.PUT_LINE(cid||':'||SCOTT.fn_TOTALVALUE(cid));END;添加加标标题题文文字字教师师演演示示讲讲解解课堂堂案案例例4——管理理函函数数案例例完完成成步步骤骤—删除除函函数数添加加标标题题文文字字1.使使用用SQLDeveloper删除除函函数数(1)在在SQLDeveloper中右右击击Functions选项项,,从从快快捷捷菜菜单单中中选选择择““Drop””项,,将将会会删删除除选选定定的的函函数数添加加标标题题文文字字教师师演演示示讲讲解解2.使使用用PL/SQL命令令删删除除函函数数【例4-3】】删除除用用户户方方案案SCOTT中的的函函数数fn_CountTypes。DROPFUNCTIONfn_CountTypes;课堂堂案案例例5——应应用用包包学习习SQLDeveloper和PL/SQL定义义包包头头、、定定义义包包体体和和使使用用包包的的方方法法。。案例例学学习习目目标标SQLDeveloper定义义包包头头、、SQLDeveloper定义义包包体体、、PL/SQL定义义包包头头、、PL/SQL定义义包包体体和和使使用用包包。。案例例知知识识要要点点课堂堂案案例例5——应用用包包包概概述述添加标题题文字包(Package)可将一一些有联联系的对对象放置置在其内内部,构构成一个个逻辑分组组,这些对对象包括括存储过过程、函函数、游游标、自自定义的的类型((例如PL/SQL表和记录录)和变变量等。。实际上,,包相当当于一个个命名的的声明部部分,任任何能在在块定义义部分出出现的对对象都可可以在包包中出现现,用户户可以从从其他PL/SQL块中对包包进行引引用。包拥有两两个独立立的部分分:包头和包体,它们都都存储在在数据字字典中。。定义一一个包,,要分别别定义包包头和包包体。包与存储储过程和和函数的的一个显显著区别别是包仅仅能存储储在非本本地的数数据库中中。可以以将存储储过程和和函数定定义在包包中,包包被保存存在高速速缓存中中,这样样体现了了模块化化编程的的特点,,使得应应用系统统的开发发更为灵灵活,运运行效率率更高。。存储过程程和函数数被加入入到包中中时,存存储过程程和函数数的声明明放在包包头部分分,而执执行代码码则放在在包体部部分。添加标题题文字教师演示示讲解课堂案例例5—应应用包案例完成成步骤—SQLDeveloper定义包包头添加标标题文文字(1)使用用SQLDeveloper定义包包头(a)在SQLDeveloper中右击击Packages选项,,从快快捷菜菜单中中选择择“NewPackage”项(b)在打打开的的“CreatePL/SQLPackage”对话框框中,,输入入包的的名称称(如如pkg_Goods)(c)单击击“确确定””按钮钮,开开始编编写包包头定定义部部分添加标标题文文字教师演演示讲讲解课堂案案例5—应应用包包案例完完成步步骤—PL/SQL定义包包头添加标标题文文字【例5-1】创建包包pkg_DisplayGoods,其包包括一一个存存储过过程和和一个个函数数,其其中存存储过过程实实现根根据商商品编编号查查询商商品名名称、、类别别名称称和商商品价价格的的功能能,函函数实实现根根据商商品类类别编编号返返回该该类别别商品品的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论