Oracle存储过程、函数、包的创建详解及示例演示

概述说句实在的,平时工作基本上不会去背啥创建存储过程、创建函数、创建包之类的语法,但是相信大家面试啥的却基本会笔试这些,所以就对存储过程、函数和包的语法做下总结

各位老铁们,大家好,今天由我来为大家分享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的薪资

Oracle存储过程、函数、包的创建详解及示例演示

创建或替换函数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语句中调用,但存储过程不能。执行的本质是一样的,你也可以理解为函数是一种存储过程。一个包中有多种存储和功能。当为某个项目设计某种类型的存储或功能时,可以将它们放在一个包中,以方便管理。

用户评论

Oracle存储过程、函数、包的创建详解及示例演示
不离我

终于找到完整的教程啦!之前一直苦恼自己理解不透这些高级概念,现在跟着步骤一步步学着还挺容易懂的,这篇文章写的真不错…

    有11位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
采姑娘的小蘑菇

讲得太棒了! Oracle 的存储过程、函数、包这些东西确实是提高效率的利器,不过平时确实很少用到,学习起来还有些枯燥。还好这位博主讲解清晰又实用,看完了我感觉至少可以做些基础的应用了。

    有10位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
冷眼旁观i

实例演示很有用,让我一下子就对流程有了更直观的理解!以前只是知道这些概念,没想深入学,现在看来确实要掌握一下,这东西以后肯定用得到。

    有18位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
小清晰的声音

我觉得这篇博文太贴心了,把创建存储过程、函数、包的优点都列出来解释了,还能看到实例演示代码,非常详细!以前总是觉得Oracle太复杂,现在感觉只要好好学习就能熟能生巧。

    有5位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
又落空

这个例子写得也太简陋了吧?我希望能看到更多的复杂场景演示,比如如何处理错误情况、如何使用游标等等…

    有6位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
西瓜贩子

存储过程确实比直接写在sql语句中效率高,但是代码组织起来更复杂,容易出错?还是建议大家谨慎选择应用场景,别盲目堆砌…

    有13位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
搞搞嗎妹妹

Oracle 的存储过程函数包这些东西还是挺有用的,特别是大公司用的大项目里更常见。不过学习起来确实有点门槛,这篇博文算是入门级的讲解了,希望能看到更深入的解析!

    有18位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
等量代换

其实我也觉得 Oracle 不必要地复杂,很多操作可以做到简单直观的,非要用这么多高级概念实现。希望Oracle以后能更加注重开发者的体验…

    有8位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
孤败

这篇教程太棒了吧!终于不再迷茫了,原来这些东西并不那么遥不可及!我马上就来实践一下!

    有19位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
金橙橙。-

学习 Oracle 的存储过程、函数、包可以帮助提高编程效率,但同时也需要投入时间去掌握这些概念,建议大家循序渐进,先从基础的例子开始练习。

    有18位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
ok绷遮不住我颓废的伤あ

oracle 存储过程和函数包真的挺好用的啊!之前写代码太慢耗时长了,自从用了这些东西后效率大大提升!

    有19位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
汐颜兮梦ヘ

这个实例演示有点太过简化,可能对于一些需要解决特殊场景的需求不太适用…

    有17位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
满心狼藉

oracle 学习成本确实有点高,不过掌握这些概念后确实能提升工作效率,这篇教程很有用,我会把它收藏起来慢慢研读。

    有7位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
◆残留德花瓣

这三种功能真的各有优缺点,要根据实际需求来选择使用。希望博主以后可以分析一下不同场景下该如何选择。

    有18位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
鹿叹

学习Oracle存储过程、函数、包需要时间和耐心,但是掌握了这些知识,你的数据库编程能力能够得到提升!

    有8位网友表示赞同!

Oracle存储过程、函数、包的创建详解及示例演示
念安я

写的不错,实例演示也非常实用,让我对Oracle的存储过程、函数、包有了更清楚的理解。希望作者继续更新更多精彩的内容!

    有11位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/125517.html

(0)
小su's avatar小su
上一篇 2024年9月1日 下午8:07
下一篇 2024年9月1日 下午8:09

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注