各位老铁们,大家好,今天由我来为大家分享Oracle存储过程、函数、包的创建详解及示例演示,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
1. 基础语法
创建或替换过程update_emp_sal(Name in out type, Name in out type,) isbegin end update_emp_sal; 2. 示例:
2.1.修改emp表的ename字段
创建或替换过程update_emp(v_empno varchar2,v_ename varchar2) isbeginupdate emp set ename=v_ename where empno=v_empno;结束update_emp;
调用方法如下:
SQLexec update_emp(‘7934′,’测试’);
2.2.带返回值的存储过程:只需返回empno=7934的sal值
创建或替换过程emp_out_sal(v_empno in varchar2, v_sal out number) is vsal number(7, 2);begin select sal into vsal from emp where empno=v_empno; v_sal :=vsal;结束;
调用一个返回值的过程
SQL var vsal numberSQL exec emp_out_sal(‘7934’,vsal);
二、Oracle创建函数(function)
1. 基本语法:
创建或替换函数(类型中的名称,类型中的名称,)返回编号是结果编号;开始返回(结果);结束;2。例子
2.1.查询ename=SCOTT的薪资
创建或替换函数ret_emp_sal(v_ename varchar2) 返回编号为v_sal number(7, 2);begin select nvl(sal, 0) into v_sal from emp where lower(ename)=lower(v_ename);返回v_sal;结束;
调用这个函数:
SQL var vsal numberSQL call ret_emp_sal(‘SCOTT’) into :vsal;方法名为vsal———3000
三、Oracle创建包(package)
包用于组合逻辑相关的程序和函数。它由两部分组成:包规格和包体。包规范用于定义公共常量、变量、过程和函数。您可以使用CREATE PACKAGE 命令创建包规范,并且可以使用CREATE PACKAGE BODY 创建包主体。
1. 创建封装规格:
创建包emp_pkg 是procedure emp_update_ename(v_empno varchar2, v_ename varchar2);函数emp_get_sal(v_empno varchar2) 返回数字;结束;2。创建包体
创建或替换包体emp_pkgis procedure emp_update_ename ( v_empno varchar2, v_ename varchar2 ) is vename varchar2(32);开始更新emp set ename=v_ename where empno=v_empno;犯罪; select ename into vename from emp where empno=v_empno; dbms_output.put_line(‘员工姓名:’||vename);结尾;函数emp_get_sal ( v_empno varchar2 ) 返回数字为vsal number(7,2);开始从emp 选择sal 到vsal,其中empno=v_empno;返回vsal;结束;结束;
这里提醒一下,创建包体而不创建包规范会失败。要使用包,必须首先创建包规范,然后创建包主体。
当要调用包的过程和函数时,请在过程和函数的名称之前添加包名称作为前缀(包名称.子程序名称)。如果要访问其他方案的包,需要在包名前添加方案。名称(程序名.包名.子程序名)
3. 调用包
SQL var vsla numberSQL call emp_pkg.emp_get_sal(‘7934’) into :vsla;SQL set serveroutput on;SQL exec emp_pkg.emp_update_ename(‘7934′,’huaweibo’);SQL call emp_pkg.emp_update_ename(‘7934′,’huaweibo’) ;SQL 从对偶中选择*;
存储过程和函数本质上没有区别。只是函数仅限于返回一个标量,而存储过程可以返回多个标量。并且函数可以嵌入到SQL中,可以在SELECT等SQL语句中调用,但存储过程不能。执行的本质是一样的,你也可以理解为函数是一种存储过程。一个包中有多种存储和功能。当为某个项目设计某种类型的存储或功能时,可以将它们放在一个包中,以方便管理。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/125517.html
用户评论
不离我
终于找到完整的教程啦!之前一直苦恼自己理解不透这些高级概念,现在跟着步骤一步步学着还挺容易懂的,这篇文章写的真不错…
有11位网友表示赞同!
采姑娘的小蘑菇
讲得太棒了! Oracle 的存储过程、函数、包这些东西确实是提高效率的利器,不过平时确实很少用到,学习起来还有些枯燥。还好这位博主讲解清晰又实用,看完了我感觉至少可以做些基础的应用了。
有10位网友表示赞同!
冷眼旁观i
实例演示很有用,让我一下子就对流程有了更直观的理解!以前只是知道这些概念,没想深入学,现在看来确实要掌握一下,这东西以后肯定用得到。
有18位网友表示赞同!
小清晰的声音
我觉得这篇博文太贴心了,把创建存储过程、函数、包的优点都列出来解释了,还能看到实例演示代码,非常详细!以前总是觉得Oracle太复杂,现在感觉只要好好学习就能熟能生巧。
有5位网友表示赞同!
又落空
这个例子写得也太简陋了吧?我希望能看到更多的复杂场景演示,比如如何处理错误情况、如何使用游标等等…
有6位网友表示赞同!
西瓜贩子
存储过程确实比直接写在sql语句中效率高,但是代码组织起来更复杂,容易出错?还是建议大家谨慎选择应用场景,别盲目堆砌…
有13位网友表示赞同!
搞搞嗎妹妹
Oracle 的存储过程函数包这些东西还是挺有用的,特别是大公司用的大项目里更常见。不过学习起来确实有点门槛,这篇博文算是入门级的讲解了,希望能看到更深入的解析!
有18位网友表示赞同!
等量代换
其实我也觉得 Oracle 不必要地复杂,很多操作可以做到简单直观的,非要用这么多高级概念实现。希望Oracle以后能更加注重开发者的体验…
有8位网友表示赞同!
孤败
这篇教程太棒了吧!终于不再迷茫了,原来这些东西并不那么遥不可及!我马上就来实践一下!
有19位网友表示赞同!
金橙橙。-
学习 Oracle 的存储过程、函数、包可以帮助提高编程效率,但同时也需要投入时间去掌握这些概念,建议大家循序渐进,先从基础的例子开始练习。
有18位网友表示赞同!
ok绷遮不住我颓废的伤あ
oracle 存储过程和函数包真的挺好用的啊!之前写代码太慢耗时长了,自从用了这些东西后效率大大提升!
有19位网友表示赞同!
汐颜兮梦ヘ
这个实例演示有点太过简化,可能对于一些需要解决特殊场景的需求不太适用…
有17位网友表示赞同!
满心狼藉
oracle 学习成本确实有点高,不过掌握这些概念后确实能提升工作效率,这篇教程很有用,我会把它收藏起来慢慢研读。
有7位网友表示赞同!
◆残留德花瓣
这三种功能真的各有优缺点,要根据实际需求来选择使用。希望博主以后可以分析一下不同场景下该如何选择。
有18位网友表示赞同!
鹿叹
学习Oracle存储过程、函数、包需要时间和耐心,但是掌握了这些知识,你的数据库编程能力能够得到提升!
有8位网友表示赞同!
念安я
写的不错,实例演示也非常实用,让我对Oracle的存储过程、函数、包有了更清楚的理解。希望作者继续更新更多精彩的内容!
有11位网友表示赞同!