oracle中 procedure(存储过程)和function(函数)本质区别

发布时间 - 2026-01-10 22:53:52    点击率:

 Oracle function里面是可以允许有DML语句的,但是不能在查询的时候使用。 

我们常用的function如:

select max(a) from table ; 

这种调用方式是不能执行带有DML的FUNCTION的。 

但是如果不用在SQL里面是可以有的

比如 dbms_output.put_line(func(...));  

如果函数里面采用自治事务,是可以有DML 的。

什么是“自治事务”:

自治事务是可以在其他事务中调用的独立事务。

自治事务可以使事务离开调用事务的上下文执行SQL操作、提交或回滚其他操作并返回到调用事务的上下文然后继续调用事务。 

自治事务调用后,事务完全与调用它的主事务独立。

不会看到任何主事务尚未提交的改变、不会共享主事务的锁或资源。自治事务的改变在自治事务提交后可以被其他事务可见。

自治事务可以调用其他自治事务,嵌套的层数没有限制。 

 Oracle FUNCTION与PROCEDURE的最大区别小结

 1、标识符不同。函数的标识符为FUNCTION,过程为:PROCEDURE。

2、函数中一般不用变量形参,用函数名直接返回函数值;而过程如有返回值,则必须用变量形参返回。

3、过程无类型,不能给过程名赋值;函数有类型,最终要将函数值传送给函数名。

4、函数在定义时一定要进行函数的类型说明,过程则不进行过程的类型说明。

5、调用方式不同。函数的调用出现在表达式中,过程调用,由独立的过程调用语句来完成。

6、过程一般会被设计成求若干个运算结果,完成一系列的数据处理,或与计算无关的各种操作;而函数往往只为了求得一个函数值

function 可以使用在表达式中 x := func();procedure不能

function 可以做为表达式 select func() from dual;procedure 不能

function 不能BEGIN func();END;;procedure 可以

下图说明它们之间的区别:

以上所述是小编给大家介绍的oracle中 procedure(存储过程)和function(函数)本质区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# oracle  # function  # procedure区别  # function和procedure  # 详解oracle管道函数的用法(一行拆为多行)  # Postgresql源码分析returns setof函数oracle管道pipelined  # Oracle function函数返回结果集的3种方法  # MySQL与Oracle差异比较之五存储过程&Function  # Oracle管道函数pipelined function的用法小结  # 小编  # 在此  # 如有  # 出现在  # 能在  # 给大家  # 数据处理  # 可以使用  # 要将  # 能给  # 用在  # 来完成  # 所述  # 或与  # 给我留言  # 感谢大家  # 存储过程  # 若干个  # 返回值  # 层数 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python自然语言搜索引擎项目教程_倒排索引查询优化案例  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  javascript读取文本节点方法小结  什么是javascript作用域_全局和局部作用域有什么区别?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel如何实现用户注册和登录?(Auth脚手架指南)  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何创建自定义Facades?(详细步骤)  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何获取PHP WAP自助建站系统源码?  如何用花生壳三步快速搭建专属网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在服务器上三步完成建站并提升流量?  微信公众帐号开发教程之图文消息全攻略  JavaScript模板引擎Template.js使用详解  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel如何使用查询构建器?(Query Builder高级用法)  如何快速生成可下载的建站源码工具?  如何在建站之星网店版论坛获取技术支持?  LinuxCD持续部署教程_自动发布与回滚机制  装修招标网站设计制作流程,装修招标流程?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Android中AutoCompleteTextView自动提示  Swift开发中switch语句值绑定模式  Python结构化数据采集_字段抽取解析【教程】  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel怎么上传文件_Laravel图片上传及存储配置  高性能网站服务器配置指南:安全稳定与高效建站核心方案  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何在七牛云存储上搭建网站并设置自定义域名?  网站制作壁纸教程视频,电脑壁纸网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何打造高效商业网站?建站目的决定转化率  JavaScript实现Fly Bird小游戏  Laravel如何集成Inertia.js与Vue/React?(安装配置)  node.js报错:Cannot find module 'ejs'的解决办法  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  canvas 画布在主流浏览器中的尺寸限制详细介绍  制作电商网页,电商供应链怎么做?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel怎么使用Intervention Image库处理图片上传和缩放