Oracle过程与函数的区别分析
作者:mdxy-dxy 时间:2024-01-15 20:15:37
Oracle过程和函数相信大家都比较了解,下面就为您详细介绍Oracle过程和函数二者之间的区别,希望可以让您对Oracle过程和函数有更深的认识。
Oracle过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。Oracle过程是作为一个独立执行语句调用的:
pay_involume(invoice_nbr,30,due_date);
函数以合法的表达式的方式调用:
order_volumn:=open_orders(SYSDATE,30);
创建过程的语法如下:
CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name
[parameter_lister]
{AS|IS}
declaration_section
BEGIN
executable_section
[EXCEPTION
exception_section]
END [procedure_name]
每个参数的语法如下:
paramter_name mode datatype [(:=|DEFAULT) value]
mode有三种形式:IN、OUT、INOUT。
IN表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。
OUT在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。
INOUT这种模式是IN和OUT的组合;在Oracle过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数。
创建函数的语法和过程的语法基本相同,唯一的区别在于函数有RETUREN子句
CREATE [ OR REPLACE] FINCTION [schema.]function_name
[parameter_list]
RETURN returning_datatype
{AS|IS}
declaration_section
BEGIN
executable_section
[EXCEPTION]
exception_section
END [procedure_name]
在执行部分函数必须有哟个或多个return语句。
在创建函数中可以调用单行函数和组函数,例如:
CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)
RETURN NUMBER
IS
pi NUMBER=ACOS(-1);
RadiansPerDegree NUMBER;
BEGIN
RadiansPerDegree=pi/180;
RETURN(SIN(DegreesIn*RadiansPerDegree));
END
标签:Oracle,过程,函数
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python3.9.1中使用match方法详解
2023-09-14 09:51:21
![](https://img.aspxhome.com/file/2023/9/60729_0s.png)
MySQL向表中添加列方法实例
2024-01-20 19:08:37
深入浅出SQL嵌套SELECT语句
2009-02-06 14:25:00
总结用Pdb库调试Python的方式及常用的命令
2023-03-11 02:09:53
python遗传算法之单/多目标规划问题
2021-09-09 20:27:24
![](https://img.aspxhome.com/file/2023/8/76878_0s.png)
Python实现压缩与解压gzip大文件的方法
2021-10-13 19:39:41
OAuth 2.0授权协议详解
2023-06-15 03:54:43
![](https://img.aspxhome.com/file/2023/8/131848_0s.png)
python程序中调用其他程序的实现
2021-08-07 12:33:16
Python+OpenCV人脸识别签到考勤系统实现(附demo)
2022-01-25 14:05:50
![](https://img.aspxhome.com/file/2023/2/99532_0s.jpg)
Vue 3.0中jsx语法的使用
2023-07-02 17:07:17
![](https://img.aspxhome.com/file/2023/6/139936_0s.png)
MYSQL数据库中cmd命令操作详解
2024-01-18 16:08:01
Python 批量下载阴阳师网站壁纸
2023-12-28 15:01:42
python验证身份证信息实例代码
2022-11-19 13:36:24
![](https://img.aspxhome.com/file/2023/9/75259_0s.gif)
OpenCV半小时掌握基本操作之对象测量
2023-06-08 12:09:18
![](https://img.aspxhome.com/file/2023/1/76011_0s.gif)
如何使用Iframe实现本页提交?
2010-06-05 12:36:00
Protobuf在Cmake中的正确使用方法详解
2024-01-02 01:26:12
![](https://img.aspxhome.com/file/2023/1/123771_0s.png)
用C语言操作MySQL数据库的通用方法
2024-01-12 17:22:45
利用Python将多张图片合成视频的实现
2022-09-16 07:10:26
![](https://img.aspxhome.com/file/2023/1/104841_0s.png)
python删除过期log文件操作实例解析
2021-02-03 18:29:36
能否推荐一个论坛用的数据库结构?
2009-11-01 18:09:00