- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
15-PLSQL高级-1
PL/SQL高级 游标 子程序 程序包 主要内容 游标 子程序 程序包 游标 游标的定义 游标的分类 游标的操作 隐式游标 可更新游标 游标变量 游标的概念 在执行select insert update delete等语句时,oracle会在内存中为其分配上下文区 游标是指向此区域的指针 为应用程序提供了一种对具有多行数据的查询结果集中的每一行数据进行单独处理的方法,是交互式应用程序常用的接口 游标分为显式游标和隐式游标 隐式游标是oracle为所有数据操纵语句自动声明的和操作一种游标 显式游标是用户声明个操作的游标 显式游标的操作过程 声明游标 CURSOR cursor_name [(arg1 arg1_type),…] [RETURN return_datatype] IS Select_statement 打开游标 为了执行游标中的select_statement语句,查询并得到一个结果集,需要打开游标 结果集是静态的,所有对数据操作的SQL语句都不会对已打开的游标结果集没有影响,直到游标关闭,再次打开 打开游标的语法 OPEN cursor_name[(arg1 arg1_type,…)]; 提取游标 打开游标后,游标指针指向结果集的第一行,若提取游标结果集数据,需要提取游标 格式: FETCH cursor_name into {variable_list | record_variable}; 关闭游标 当提取和处理完游标后,应该及时关闭游标,以释放资源 CLOSE cursor_name; 游标关闭后可以再次打开,如果在游标关闭后在对他进行打开以外的操作,将产生invalid_cursor异常错误 游标属性 Cursor_name%ISOPEN: 游标打开为ture Cursor_name%FOUND: 最近提取成功为ture Cursor_name%NOTFOUND; 最近提取失败为ture Cursor_name%ROWCOUNT: 最近提取到的数据行的序号 隐含游标 Oracle为每一个不属于显式游标的DML语句都创建一个隐式游标 隐式游标的名字为SQL 不能对SQL游标显式的执行open fetch close语句 Oracle隐式的打开、提取、关闭SQL游标 隐式游标的属性 游标FOR循环 为了简化游标操作,PL/SQL语言提供了游标for循环语句 一个游标for循环可以隐含的实现打开、提取和关闭,以及循环处理结果集 过程 进入循环,自动打开一个已经声明的游标,并提取第一行游标数据,当处理完成当前所提取的数据,而进入下一循环,则提取下一行游标数据 提取处理完成,自动结束循环,关闭游标。 当在for循环中因exit或goto语句,跳出循环,则自动关闭游标 游标For循环语法格式 语法: FOR index_variable IN cursor_name[(value1[,value2]…)] LOOP 语句段 END LOOP; Cursor_name: 已经声明的游标名 Value1,value2: 应用程序传递给游标的参数 Index_variable: 是游标for循环隐含声明的索引变量,其结构和游标查询语句返回的结果集结构相同 可更新游标 游标可以更新或删除当前游标行的数据 在定义游标时,查询语句中必须包含for update选项,以便在打开游标时,锁定游标结果集在库表中对应的数据行 定义游标语法: CURSOR cursor_name IS select_statement FOR UPDATE [NOWAIT] 在执行更新时,在update delete语句后要加上 Where current of cursor_name; 子程序 存储过程 存储函数 为何使用子程序 PL/SQL匿名块不能存储于数据库,每次执行都要再次编译 过程和函数是命名的PL/SQL块,可以被存储于数据库,可以被其他PL/SQL块引用 利用存储过程和函数实现商业逻辑和企业规则并保存到数据库 可以简化应用程序的开发和维护,提高效率和性能 过程 用于执行特定的操作 经常需要执行的特定操作,一般建立过程使用 从而简化客户端应用程序的开发和维护 过程没有返回值 过程语法格式 Create [or replace] procedure proc_name ([arg1 in | out | in out]] arg_type1,…) Is | as 声明部分 Begin 执行部分 Exception 异常处理部分 End [proc_name]; 函数 用于计算和返回特定的数据 对于经常需要的计算写成函数 函数的调用是表达式的一部分,而过程的调用是一条PL/SQL语句 函数语法格式 Create [
文档评论(0)