plsql上课PPT.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
plsql上课PPT

包 包可将一些有联系的对象放在其内部。任何能在块定义部分出现的对象都可以在包中出现。这些对象包括存储过程、函数、游标、自定义的类型(PL/SQL表和记录)和变量。我们可以在其它的PL/SQL块中引用包中的这些对象,也就是说。包为PL/SQL提供了全局变量。 包的定义 一个包由两个独立的部分组成---包头和包体。各部分被单独地存放在数据字典中。定义一个包,要分别定义包头和包体。 定义包头 语法: CREATE [OR REPLACE] PACKAGE [schema.] package {IS|AS} pl/sql_package; 其中PACKAGE 是包的名称,pl/sql_package可以是存储过程、函数、变量、类型、异常以及游标的定义。 注意点:存储过程或函数必须在包头中预定义。 定义包体 包体是一个数据字典对象。只有在包头成功编译后,包体才能被编译。包体只包含包头中已预定义的子程序的代码。在包头中定义(不是预定义)的对象可以直接在包体中使用,不必再在包体中定义。 语法: CREATE [OR REPLACE] PACKAGE BODY [schema.] package {IS | AS} pl/sql_body; 包的初始化 与变量类似,包也可被初始化。中是初始化部分在包体的最后部分被定义。语法: CREATE OR REPLACE PACKAGE BODY package{IS|AS} --包体中过程与函数的定义部分。 BIEGN Initialization_code; END[package] 包的使用 1.包中对象的引用 在包中定义的任意对象都可在包外使用,只是在引用该对象前用包名做前缀。 declare v_name students.first_name%type; begin v_name := students_inf.get_student_name(10001); dbms_output.put_line(v_name); end; 重载包中的子程序 在包的内部,存储过程和函数都可以被重载,这意味着有多个存储过程或函数可以使用同一个名称,但参数不能相同。这样允许用不同的参数调用同一个名字的过程或函数。 异常处理 异常分为预定义异常和用户自定义异常。预定义异常是由系统定义的异常。由于它们已在STANDARD包中预定义了,因此,这些预定义异常可以直接在程序中使用,而不必在定义部分声明。而用户定义异常则需要在定义部分声明 后才能在可执行部分使用。用户自定义异常对应的错误不一定是ORACLE错误,例如 ,它可能是一个数据错误。 异常的声明 用户自定义异常必须先在定义部分声明,然后再使用,这一点与变量声明类似。用户自定义异常声明的语法如下: EXCEPTION exception 如果要处理没有与预定义异常对应的ORACLE的错误时,则需要为这些ORALCE错误声明相应的用户 自定义异常。 PRAGMA EXCEPTION_INIT(exception_name,oracle_error_number); 异常的产生 当与预定义异常对应的错误出现时,则该预定义异常就会自动产生。而一个用户自定义异常通常是由RAISE语句来产生(由EXCEPTION_INIT编译指令声明的用户自定义异常可通过对应ORACLE错误的出现面产生)。如果需要的话,预定义异常也可使用RAISE语句来产生。 SQLCODE和SQLERRM函数 由于OTHERS 子句处理WHEN子句没有处理异常,所以在OTHERS子句中处理的异常是未知的,我们可以使用SQLCODE和SQLERRM函数来确定异常对应的错误代码和信息。 练习1 用IF 语句 定义一个学号 变量 V_ID 给V_ID 的初始值为10006 如果FIRST_NAME = DAVID 显示出名字 和学号 否则 显示 10006 的学号的学生不为DAVID ------------------------- 用WHILE LOOP 循环 取得所有学生的信息(学号 和 姓名 ),学号用最大,最小函数来取。 * if c_students%ISOPEN then dbms_output.put_line(true); ELSE dbms_output.put_line(false); end if; * declare --声明一个变量,这个变量用来接收游标返回的结果集; v_name students.first_name%type; v_id students.id%type; v_line varchar2(100); --声明游标; CURSOR c_sutdent is

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档