oracle过程..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oracle过程.

本篇主要内容如下: 6.1?引言 6.2?创建函数 6.3?存储过程 6.3.1?创建过程 6.3.2?调用存储过程 6.3.3?AUTHID 6.3.4?PRAGMA AUTONOMOUS_TRANSACTION 6.3.5?开发存储过程步骤 6.3.6?删除过程和函数 6.3.7?过程与函数的比较 ? 6.1?引言 过程与函数(另外还有包与触发器)是命名的PL/SQL块(也是用户的方案对象),被编译后存储在数据库中,以备执行。因此,其它PL/SQL块可以按名称来使用他们。所以,可以将商业逻辑、企业规则写成函数或过程保存到数据库中,以便共享。 过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。在本节中,主要介绍: 1.?? 2.?? 3.?? 6.2?创建函数 1. 创建函数 ? 语法如下: ? CREATE?[OR?REPLACE]?FUNCTION?function_name ?(arg1?[?{?IN?|?OUT?|?IN?OUT?}]?type1?[DEFAULT?value1], ?[arg2?[?{?IN?|?OUT?|?IN?OUT?}]?type2?[DEFAULT?value1]], ?...... ?[argn?[?{?IN?|?OUT?|?IN?OUT?}]?typen?[DEFAULT?valuen]]) ?[?AUTHID?DEFINER?|?CURRENT_USER?] RETURN?return_type? ?IS?|?AS ????类型.变量的声明部分? BEGIN ????执行部分 ????RETURN?expression EXCEPTION ????异常处理部分 END?function_name; ? ????????? IN,OUT,IN OUT是形参的模式。若省略,则为IN模式。IN模式的形参只能将实参传递给形参,进入函数内部,但只能读不能写,函数返回时实参的值不变。OUT模式的形参会忽略调用时的实参值(或说该形参的初始值总是NULL),但在函数内部可以被读或写,函数返回时形参的值会赋予给实参。IN OUT具有前两种模式的特性,即调用时,实参的值总是传递给形参,结束时,形参的值传递给实参。调用时,对于IN模式的实参可以是常量或变量,但对于OUT和IN OUT模式的实参必须是变量。 ? ????????? 一般,只有在确认function_name函数是新函数或是要更新的函数时,才使用OR REPALCE关键字,否则容易删除有用的函数。 ? 例1.?????????? ? --获取某部门的工资总和 CREATE?OR?REPLACE FUNCTION?get_salary( ??Dept_no?NUMBER, ??Emp_count?OUT?NUMBER) ??RETURN?NUMBER? IS ??V_sum?NUMBER; BEGIN ??SELECT?SUM(SALARY),?count(*)?INTO?V_sum,?emp_count ????FROM?EMPLOYEES?WHERE?DEPARTMENT_ID=dept_no; ??RETURN?v_sum; EXCEPTION ???WHEN?NO_DATA_FOUND?THEN? ??????DBMS_OUTPUT.PUT_LINE(你需要的数据不存在!); ???WHEN?OTHERS?THEN? ??????DBMS_OUTPUT.PUT_LINE(SQLCODE||---||SQLERRM); END?get_salary; ? 2. 函数声明时所定义的参数称为形式参数,应用程序调用时为函数传递的参数称为实际参数。应用程序在调用函数时,可以使用以下三种方法向函数传递参数: ? 第一种参数传递格式:位置表示法。 即在调用时按形参的排列顺序,依次写出实参的名称,而将形参与实参关联起来进行传递。用这种方法进行调用,形参与实参的名称是相互独立,没有关系,强调次序才是重要的。 格式为: ?????? argument_value1[,argument_value2 …] ? 例2:计算某部门的工资总和: ? DECLARE ??V_num?NUMBER; ??V_sum?NUMBER; BEGIN ??V_sum?:=get_salary(10,?v_num); ??DBMS_OUTPUT.PUT_LINE(部门号为:10的工资总和:||v_sum||,人数为:||v_num); END; 即在调用时按形参的名称与实参的名称,写出实参对应的形参,而将

文档评论(0)

xznh + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档