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


相关推荐: Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何与Inertia.js和Vue/React构建现代单页应用  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  三星、SK海力士获美批准:可向中国出口芯片制造设备  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Swift中swift中的switch 语句  Android滚轮选择时间控件使用详解  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Laravel如何使用Telescope进行调试?(安装和使用教程)  如何快速登录WAP自助建站平台?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何快速生成专业多端适配建站电话?  EditPlus中的正则表达式 实战(2)  C++用Dijkstra(迪杰斯特拉)算法求最短路径  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Android Socket接口实现即时通讯实例代码  如何在万网ECS上快速搭建专属网站?  Linux后台任务运行方法_nohup与&使用技巧【技巧】  如何在腾讯云免费申请建站?  如何在IIS中新建站点并配置端口与IP地址?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  浅析上传头像示例及其注意事项  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何正确下载安装西数主机建站助手?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  微信h5制作网站有哪些,免费微信H5页面制作工具?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  详解Huffman编码算法之Java实现  Android中AutoCompleteTextView自动提示  如何用花生壳三步快速搭建专属网站?  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何在橙子建站中快速调整背景颜色?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  HTML 中如何正确使用模板变量为元素的 name 属性赋值  高防服务器租用指南:配置选择与快速部署攻略  Python文件流缓冲机制_IO性能解析【教程】  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  教你用AI润色文章,让你的文字表达更专业  Python自动化办公教程_ExcelWordPDF批量处理案例  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案