创建语法格式:
Create Or Replace Function fun_name(arg1 in datatype default v_value,arg2 out datatype default v_value,…)
Return datatype
As
--在此定义变量
Begin
--函数具体过程;
Return (v_return_value);--这里的括号可有可无
End fun_name; --这里的函数名称可有可无
说明:
1,function 返回值必须有,且被呼叫时须为表达式的一部份
2,参数可由function 中传进传出
3,可于PL/SQL表达式和 SQL 叙述中使用
4,最好不要用 stored function 传回多个值
5,如果函数没有参数,则不需要括号,调用时括号可有可无
6,in 和 out 以及 in out 模式参数,如果省略,则默认是 in,参数可以有默认值(default)
7,在调用function或procedure时out模式参数将被初始化为null
8,[ or replace ] 表示可以重复编译,可以省略
9,参数的数据类型不需加长度限制
10,END后的函数名称可以省略
11,用户自定义函数可以像系统函数一样在select语句中调用,但是该函数必须满足纯层的要求
关于纯层(purity level):定义了函数所能读或修改的数据结构,函数有四个纯层:
WNDS 不能写数据库状态 函数不能修改任何数据库表( 使用DML语句)
RNDS 不能读数据库状态 函数不能读数据库表(使用select语句)
WNPS 不能写包状态 函数能修改任何数据库表(变量不能出现在赋值语句的左边以及fetch语句中)
RNPS 不能读包状态 函数不能使用任何包变量(包变量不能出现在赋值语句的右边或作为过程的一部分,以及SQL表达式中)
例子1:
create or replace function test_fun(vemp_no in char)-------------此处变量不能加长度
return varchar2 --一定要有返回值﹐此处无分号
as
vemp_name varchar2(10);-------------此处变量要加长度
begin
select emp_nm into vemp_name from empm where emp_no=vemp_no;
return(vemp_name);
end test_fun;
例子2:
create or replace function fun(vemp_no in CHAR)
return empm%rowtype – 可以返回一行值
as
lyj_rec emp_m%rowtype;
begin
select * INTO lyj_rec from emp_m where emp_no=vemp_no;
return lyj_rec;
end;
function 与 procedure 的比较
--都可以通过使用out参数返回一个以上的值
--当返回多个值时,用procedure较好
--当返回一个值时,用function较好
--function可以在sql语句中调用,而procedure则不可
-------------检索存储过程
-------------Oracle中有个系统视图﹕user_source﹐它提供以下4个列
-------------Name:包括存储过程﹐函数﹐包或包体的名称
-------------Type﹕指出源代码是否属于存储过程﹐函数还是包体
-------------Text:包含源代码的一行
-------------Line﹕包含在Text中源代码中所包含的函数
----例子检索存储过程test_pro4的源代码
select line,text from user_source where name='test_pro2' order by line;
分享到:
相关推荐
Oracle学习笔记...............121 前言....................................121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions.............
Oracle学习笔记...............121 前言....121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions..........127 第四章 Displaying Data from ...
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答