oracle中自定义函数如何使用,oracle自定义函数语法及使用

1、自定义函数语法

create [or replace] function  函数名                         -- 定义一个名为xxx的函数

(

parameterName1, mode1 dataType1,

parameterName2, mode2 dataType2,

...

)

return返回值类型                                              --表示函数的返回类型为char或number等类型

is-- 表示函数体部分,关键字用is或as都可以

声明部分;

begin-- 表示函数开始

函数体;

return变量;                                                          -- 表示函数返回值

end;                                                                    -- 表示函数结束

参数含义:

参数

含义

参数值含义

parameterName1

表示参数名称

dataType

表示参数的数据类型

char、NUMBER、nvarchar2.....

mode1、mode2

表示参数类型

in、out、in out

1、IN模式:只读。在模块里面,实参的数值只能被引用,而这个参数不能被改变。

2、OUT模式:只写。模块能够给这个参数进行赋值,但是这个参数的数值不能被引用。

3、IN OUT模式:可读写。这个模块的数值在模块内可被引用或改变。

2、自定义函数使用

select 自定义函数名(参数) from 表名;

3、示例

示例1:

create or replace function explainParameter

(

inParam in char,

outParam out char,

inAndOutParam in out char

)

return char

as

returnChar char;

num   number:=0;

begin

inParam := 'Hello World';  -- 这是错误的,in类型的参数只能用来传值,不能赋值

outParam := 'Hello World'; -- 这是正确的,out类型的参数可以用来被赋值

inAndOutParam := 'Hello World'; -- 这是正确的,in out参数既可以用来传值,又可以被赋值

inAndOutParam := outParam;-- 这是错误的,out参数不能用来传值

returnreturnChar;

end;

调用:select explainParameter ('a','b','c')  from dual;

示例二:根据表名查询该表最大主键值,vseq序列表存其他业务表refcode主键最大值。

create or replace

function f_getMaxRefcode(tableName in vnarchar2)

returnnumber

is

nextval number;

num number:=0;

begin

select count(*) into num from ( select refcode from vseq where tablename=tableName );

if(num>1) then

update vseq set maxrefcode=maxrefcode+1 where tablename=tableName;

commit;

end if;

if(num=0) then

insert into vseq(tablename,maxrefcode) values(tableName,1);

commit;

end if;

select maxrefcode into nextval from vseq where tablename=tableName;

returnnextval;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值