Oracle Function详解

Oracle进阶(八)自定义函数(Function) 1、函数语法 CREATE OR REPLACE FUNCTION 函数名(参数1 模式 参数类型) RETURN 返回值类型 AS 变量1 变量类型; 变量2 变量类型; BEGIN 函数体; END 函数名; 2、定义函数 2.1以游标形式返回结果集 --创建函数:通过员工姓名获取记录行 CREATE OR REPLACE FUNCTION F_GETEMPNO(PNAME IN VARCHAR2) RETURN SYS_REFCURSOR IS EM. 阅读详情

一、概述

1、函数与存储过程的不同点
(1)、函数就是一个有返回值的过程,且是必须。
(2)、存储过程只能作为一个plsql语句调用,而函数不但可以作为plsql语句调用,符合约束的函数还可以作为sql表达式的一部分使用。
(3)、对于无参函数的定义和调用都没有圆括号,但无参存储过程需要。

2、函数与存储过程的相同点
(1)、都存储在数据库中,并且可在块中调用,代码都有定义部分、可执行部分、异常处理部分。
(2)、都有in,out,in out三种参数,都可以使用缺省值,都可以通过out模式返回一个或多个值。
(3)、都可以使用位置表示法和名称表示法。


二、函数参数的传递方式

1.无参函数
create or replace function fun_dtime return varchar2
as
begin
return to_char(sysdate,'yyyy"年"mm"月"dd"日"');
end;

调用
begin
dbms_output.put_line(fun_dtime);
end;

2.带输入输出参数的函数
create or replace function fun_info(i_eno number,o_title out varchar2,salch in out number) return varchar2
as
name emp.ename%type;
begin
select ename into name from emp where empno=i_eno;
update emp set sal=sal+salch where empno=i_eno returning job,sal into o_title,salch;
return name;
end;

调用
declare
v_eno number:=7369;
vn emp.ename%type;
vj emp.job%type;
vs emp.sal%type;
begin
vs:=100;
vn:=fun_info(v_eno,vj,vs);
dbms_output.put_line('姓名' || vn || '岗位' || vj || '新工资' || vs);
end;

3.删除函数
drop function fun_info;


三、return语句

在函数内,是通过return语句来返回值的。函数体可以有多条return语句,但只能有一条被执行。函数结束时,还没有执行return语句会产生错误。
另外,return语句也可以使用在存储过程中,这种情况下它没有参数,当执行不带参数的return语句后,立刻结束并跳出存储过程,将out,in out形式的形参的当前值传给实参,并将控制权返回到调用环境。


四、函数在PLSQL中的使用


1、函数可在sql中的以下部分被调用:
select、where、having、connect by、start with、order by、group by、insert的values中、update的set中

2、被调用的函数满足以下限制:
1)、只能调用服务端函数,即是不能作为块的一部分。
2)、函数只能有输入参数,不能有out\in out。
3)、函数只能使用sql支持的标准数据类型,不能使用PL/SQL特有的数据类型。
4)、函数内不能包含DML语句。
Oracle 11g 常用函数(Functions)详解 Oracle 11g 常用函数(Functions)详解 目录 ABS. 3 ACOS. 3 ADD_MONTHS. 4 ASCII 4 ASCIISTR. 5 ASIN.. 5 ATAN.. 5 ATAN2. 5 AVG.. 6 BFILENAME. 6 BIN_TO_NUM... 6 BITAND.. 7 CARDINALITY. 7 CAST. 7 CEIL. 阅读详情

相关推荐

Oracle数据库密码安全加固:从零配置verify_function函数

本文详细指导如何从零配置Oracle数据库的verify_function函数,以强化密码安全策略。通过定位并执行utlpwdmg.sql脚本,激活数据库内置的密码复杂性验证机制,强制用户设置符合长度、字符类型等要求的强密码,有效防范因弱口令导致的安全风险。

weixin_29327977的博客 459

oracle function详解,Oracle函数用法详解

本文概述函数是用于返回单个值的子程序。你必须在调用函数之前声明并定义一个函数。它可以在同一时间声明和定义, 也可以在同一块中先声明然后定义。在Oracle中创建函数句法CREATE [OR REPLACE] FUNCTION function_name[ (parameter [, parameter]) ]RETURN return_datatypeIS | AS[declaration_sec...

weixin_35949264的博客 9929

Oracle数据库密码策略强化:从零配置verify_function函数

本文详细介绍了如何从零开始为Oracle数据库配置并启用verify_function密码验证函数,以强化密码策略。通过定位并执行utlpwdmg.sql脚本,确保密码符合复杂性要求,并进一步指导如何创建自定义函数以满足更严格的安全策略,从而有效提升数据库账户安全。

weixin_28568819的博客 452

Oracle Function 函数

Oracle Function 一、概述 1、函数与存储过程的不同点 (1)、函数就是一个有返回值的过程,且是必须。 (2)、存储过程只能作为一个plsql语句调用,而函数不但可以作为plsql语句调用,符合约束的函数还可以作为sql表达式的一部分使用。 (3)、对于无参函数的定义和调用都没有圆括号,但无参存储过程需要。

基于Oracle11G 3万+

unity之——解决利用Jenkins在Windows环境下打包unity工程中的场景为apk包,打包打不出来的问题。并且介绍Jenkins从安装到环境配置,调用unity代码的过程(填坑)!!!!!

今天第一次接触Jenkins,比较头疼。网上的Jenkins配置环境相关的资料比较散乱,并且在Windows平台下相关的配置更是少之又少。我在这里讲一下从Jenkins安装到构建工程。打包unity工程的apk包的过程。 1.首先去Jenkins官网下载安装就不说了,安装完成之后在浏览器中输入http://localhost:8080(默认访问地址)进入Jenkins web界面。进行账号的注册...

cgy56191948的博客 2020

AD21导出gerber文件

文件–>制造输出–>Gerber Files 文件–>制造输出–>Gerber Files 通用、光圈和高级跟第一步一样 3.文件–>制造输出–>NC Drill Files 这个默认就可以了 主要参考视频来自bilibili添加链接描述 此篇博客主要是写给自己好记的,无其他商业用途 ...

新手小杨 1万+

Oracle 函数(Function)开发文档

Oracle函数是存储在数据库中的可重用程序单元,用于执行计算并返回单个值。主要优势包括代码重用、简化复杂计算和提高性能。函数分为标量函数(返回单值)、表值函数(返回结果集)和聚合函数(对数据聚合计算)。创建时应遵循命名规范(F_前缀)、添加详细注释,并包含异常处理。性能优化建议包括减少上下文切换、标记确定性函数和避免DML操作。函数可在PL/SQL块或SQL语句中调用,并通过ALTER FUNCTION管理。最佳实践强调单一职责、参数验证和单元测试,以确保开发高质量、易维护的函数。

Leon-Ning Liu的博客 1278

别再手动填数据了!Vivado里用.coe文件给ROM IP核预装数据的保姆级教程

本文详细介绍了在Vivado中使用.coe文件为ROM IP核预装数据的全流程教程,包括文件格式规范、数据转换技巧和Vivado配置指南。通过自动化数据加载,开发者可以显著提升FPGA开发效率,避免手动输入错误,适用于查找表、波形存储等多种应用场景。

weixin_33377602的博客 337

oracle function详解,Oracle 函数 Function 解析

定义函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分。函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用。函数必须有一个返回值,而过程没有做强制的规定。RETURN在声明部分需要定义一个返回参数的类型,而在函数体中必须有一个RETURN语句。如果函数结束时还没有遇到返回语句,就会发生错误。创建create or replace function ...

weixin_35705382的博客 575

STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析

本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。

weixin_29184371的博客 234

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 759

oracle function详解,关于Oracle过程,函数的经典例子及解析

以下皆为自己的学习感受,存档加分享。存档在先,分享在后,若有不妥之处,并无误人子弟之意,请各位AC之间的大牛不吝指教,小生在此鞠躬谢过。一,Oracle中的过程,函数对于oracle中的过程和函数,个人觉得可以化为一类,因为它们在写法上并没有什么的不同。公式无非就是create or replace Package_name(paramater1 in type,paramater2 in typ...

weixin_36180611的博客 590

保姆级教程:如何将仅限客户端使用的免费大模型(Gemini、Antigravity、Qwen Code、Kiro 等)转为任何应用可调用的 OpenAI 兼容标准接口

大模型 API 费用太贵?💸 这篇文章分享一个薅羊毛神器,能把 Gemini、Qwen Code、Kiro 等客户端专属的免费大模型转换成标准 OpenAI 兼容接口 🔌。支持多协议互转、账户池管理、Web 管理界面,Docker 一键部署,零成本调用 Claude Opus 4.5、Gemini 3 Pro 等高级模型 ✅

XiaoqiangClub的博客 1034

oracle grant execute function,oracle grant 详解

我以scott/tiger登录以后建立了表以后插入数据提示我插入成功了,但是在查询数据的时候是没有记录的,原因是我的scott用户没有对这个表插入的权限。这时要以system登录以后用grant赋予scottr 中某个表的相应的权限。GRANT名称GRANT— 赋予一个用户,一个组或所有用户访问权限GRANT privilege [, ...] ON object [, ...] TO { ...

weixin_34878397的博客 3111

UE5实现距离测量功能

UE5实现距离测量功能

专注GIS开发 6266

livox雷达斜装修改

指的是,使用外部的陀螺仪的话,雷达到外部陀螺仪的转换,而mid360的陀螺仪是内置在360里面的,且方向和点云方向是一致的,所以不能通过修改此处去改变陀螺仪方向。同时livox_ros_driver2中的MID360_config.json里面的。这里面的外参,只能改变点云相对陀螺仪的位姿,而不能将陀螺仪映射到你期望的倾斜角度。fast_lio中的mid360.yaml中的外参。

z1872385的博客 2709

oracle function sys_refcursor,oracle如何合并多个sys_refcursor详解

一、背景在数据开发中,有时你需要合并两个动态游标sys_refcursor。开发一个存储过程PROC_A,这个过程业务逻辑相当复杂,代码篇幅较长。一段时间后要开发一个PROC_B,要用PROC_A同样的逻辑,而且在这个过程中,还要循环调用PROC_A这个过程。摆在你面前的有两个选择。打开PL/SQL,仔细的读PROC_A这个过程,一直到明白了所有的逻辑,然后在自己的过程中重写这个逻辑 。直接复制P...

weixin_30800961的博客 500

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

oracle存储过程详解案例,Oracle存储过程function语法及案例

create or replace function F01_SX03_SUM(statdate varchar2,code varchar2,para varchar2)RETURN number ISv_me number;v_mb number;beginif para = 'me' thenselect nvl(sum(nvl(me, 0)), 0) / 10000into...

weixin_36374366的博客 476

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

mysql function_详解mysql模拟Oracle序列的方案及实例演示

概述众所周知,Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的。不过小编在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要oracle迁移数据库到mysql,主键方面还是不太好处理。oracle序列先介绍下oracle序列方面的内容,在oracle中sequence就是所谓的序...

weixin_39928480的博客 101

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql function_详解MySQL数据库如何实现类似Oracle的序列?

概述众所周知,Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的。不过小编在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要oracle迁移数据库到mysql,主键方面还是不太好处理。oracle序列先介绍下oracle序列方面的内容,在oracle中sequence就是所谓的序...

weixin_39612849的博客 221

oracle function详解,分析函数语法解析 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...

分析函数的语法很简单,但使用时却发现有很多令人迷惑的地方。本文就但从语法层次来分析其中的迷惑之处。1. 分析函数整体语法分析函数的语法如下:analytic_function([ arguments ]) OVER (analytic_clause)这里: analytic_function是分析函数的名称; arguments是分析函数的参数; o...

weixin_39828960的博客 377

oracle function返回sql执行结果_详解Oracle基础多条sql执行在中间的语句出现错误时的控制方式...

概述时如果在中间的语句出现错误,后续会不会直接执行,如何进行设定,以及其他数据库诸如Mysql是如何对应的,这篇文章将会进行简单的整理和说明。环境准备使用Oracle的精简版创建docker方式的demo环境。多行语句的正常执行创建的两个字段的学生信息表,正常添加三条数据,详细如下:# sqlplus system/liumiao123@XE < desc student> sele...

weixin_34036423的博客 327

oracle function返回sql执行结果_详解Oracle数据库OutLines的使用--控制SQL执行计划的机制...

概述在实际的工作当中,可能会碰到在开发环境或测试环境中系统运行正常,但是移植到真实生产环境中却发现响应速度很慢,如果在调试之后效果仍然不佳的情况下,可以尝试使用outlines来稳定个别SQL语句的执行计划。概念Oracle Outline,中文也称为存储大纲,是最早的基于提示来控制SQL执行计划的机制,也是9i以及之前版本唯一可以用来稳定和控制SQL执行计划的工具。outline是一个hints...

weixin_29955195的博客 302

Oracle 12c/19c 数据库密码安全实战:手把手教你配置PASSWORD_VERIFY_FUNCTION(附避坑指南)

本文详细介绍了Oracle 12c/19c数据库中配置PASSWORD_VERIFY_FUNCTION的实战指南,包括密码复杂度设置、常见问题排查及高级定制策略。通过手把手教程和避坑指南,帮助DBA提升数据库密码安全性,满足合规要求并防范数据泄露风险。

weixin_30443731的博客 338
上一篇: Oracle Procedure详解
下一篇: Java泛型讲解
andybbc
博客等级 码龄11年 64粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值