问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Oracle中存储过程和函数的区别

发布网友 发布时间:2022-04-21 23:23

我来回答

2个回答

热心网友 时间:2022-04-07 21:08

定义:
存储过程(Stored Procere )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程

带有参数)来执行它。

存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。

在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。

优 点:

1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3.存储过程可以重复使用,可减少数据库开发人员的工作量。

4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。

存储过程与函数的对比

存储过程的优缺点
优点:减少网络交互的成本。
缺点:
a、不可移植性,每种数据库的内部编程语法都不太相同,当你的系统需要兼容多种数据库时,最好不要用存储过程。
b、学习成本高,DBA一般都擅长写存储过程,但并不是每个程序员都能写好存储过程,除非你的团队有较多的开发人员熟悉写存储过程,否则后期系统维护会产生问题。
c、业务逻辑多处存在,采用存储过程后也就意味着你的系统有一些业务逻辑不是在应用程序里处理,这种架构会增加一些系统维护和调试成本。
d、存储过程和常用应用程序语言不一样,它支持的函数及语法有可能不能满足需求,有些逻辑就只能通过应用程序处理。
e、如果存储过程中有复杂运算的话,会增加一些数据库服务端的处理成本,对于集中式数据库可能会导致系统可扩展性问题。
f、为了提高性能,数据库会把存储过程代码编译成中间运行代码(类似于java的class文件),所以更像静态语言。当存储过程引用的对像(表、视图等等)结构改变后,
存储过程需要重新编译才能生效,在24*7高并发应用场景,一般都是在线变更结构的,所以在变更的瞬间要同时编译存储过程,这可能会导致数据库瞬间压力上升引起故障(Oracle数据库就存在这样的问题)。

热心网友 时间:2022-04-07 22:43

1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。

2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。
4)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。
oracle函数和存储过程有什么区别

oracle函数和存储过程有什么区别1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些...

非结构化数据如何可视化呈现?

通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...

oracle函数和存储过程有什么区别

一、主体不同 1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。二、特点不同 1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。2、存储过程:用...

oracle存储过程和函数的区别

1.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关...

oracle中函数和存储过程的区别和联系

不同点:1.存储过程定义关键字用procedure,函数定义用function。2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(se...

Oracle中 存储过程,过程和函数有什么区别和联系

过程:函数和存储过程的统称。函数:有且仅有一个返回值,可以用于SQL语句中。 如:x := get_X(),select get_X() from dual,返回值为函数调用的结果。存储过程:无返回值。要返回结果,必须声明为out参数。如:sp_x(x,y,z),x和y为in类型参数,z为out/in out类型参数。在oracle中,封装...

oracle中函数和存储过程的区别和联系

在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点。刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别。一、存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure。2.创建存储...

Oracle中存储过程和函数的区别

存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。优 点:1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以...

Oracle中存储过程和函数的区别

函数有返回值,而过程没有,简单点就是 function test_f (parameter in varchar2) return varchar2;procdrue test_p (parameter in varchar2);declare result varchar2;begin result := test_f; --函数有返回值 必须用变量去装载 test_p; --过程没有可直接调用.end;

Oracle 存储过程和函数的区别

其实,Oracle函数和存储过程差别很小,对比其他数据库,比如SqlServer:sqlserver中,函数是不能存在非select的dml语句的,换句话说,函数中,sqlserver是不能出现update、delete、insert等语句的 而Oracle中,是十分自由和宽容的,update、delete、insert等语句都可以出现 但因为Oracle的自由度,会引起其它一些...

Oracle 存储过程和函数的区别

明显的区别:关键字: procedure 和funcation 调用方法:function可以直接再SQL语句中有返回值,类似于select min(column) from tabletest procedure只能再语句块中使用,不能直接在SQL中使用 返回值:函数的返回值可以用return ,存储过程的返回值可以通过输出参数来获取 ...

oracle存储过程和函数的区别 数据库中存储过程和函数区别 sql函数和存储过程的区别 数据库存储过程与函数的区别 存储过程和函数有什么区别 存储过程和sql的区别 函数和过程的区别 mysql函数和存储过程 存储过程和函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
excel中怎么设置页眉? 揭秘一个**直播平台---映秀直播,你上当了么? 大连市内转户口需要什么? 落户到大连需要什么手续 华硕电脑怎么看型号? 京东的销量在哪里看的? 怎么知道微信群里有没有人接龙? 微信群违规有几种情况? 有没有陪玩的微信群啊,求推荐。 冰箱老是嗡嗡响还烫,是怎么回事啊? 银行卡没预留号码怎么办?能在网上填写预留号码吗? 虚拟内存设置无分页文件是怎么回事? 我的C盘中的hiberfil.sys和pagefile.sys这两个文件... oracle函数和存储过程有什么区别,说的细致些最好... 求一个问道五人队伍游戏名,名字只要两个字的,最... 农行银行卡没预留号码怎么办? usb插入电脑后为什么没有反应? Oracle中 存储过程,过程和函数有什么区别和联系 无分页文件怎么弄? oracle数据库中函数和存储过程的区别 中国银行手机银行没有预留手机号怎么绑卡 两个字的霸气游戏名字 oracle函数和存储过程的区别 虚拟内存设置无分页文件怎么回事 开启了USB调试,连接了数据线,还是没反应,该怎么... C盘设置无分页文件有什么用 oracle中函数和存储过程的区别和联系 pagefile.sys怎么删除 农业银行卡办理时没有预留号码!在网上怎么预留?... Oracle 存储过程和函数的区别 虚拟内存无分页文件什么意思 pagefile是什么文件??可以删除吗?? 办银行卡的时候没留手机号怎么办? 求两个字 霸气 犀利 游戏名字!!!!! oracle SQL语句中的游标,函数和存储过程的区别 我电脑变成无分页文件,如何恢复 虚拟内存设置为无分页文件行吗 我办卡时没有预留手机号该怎么弄 邮政卡没有预留手机号怎么办? 怎样把原先的分区设置为无分页文件 C盘 关于设置无分页文件 用分区助手5.5给c盘加大空间 把e分给c 然后说要移... 请教电脑高手:计算机属性设置成"无分页文件"对电... 为什么设置了无分页文件还是有虚拟内存? oracle的functions,dblink,视图,存储过程区别 WIN7 虚拟内存无法修改 始终为“无分页文件” 跪求两个字的游戏名! 一定要霸气的! !!!! 关于虚拟内存无分页文件 oracle中的存储过程与函数 Oracle中存储过程和函数中IS和AS的区别