oracle怎么设函数 oracle函数用法

用oracle定义一个函数,怎么定义?create or replace function test(p1 in number, p2 in varchar2)
return varchar2 is
v_out varchar2(200);
begin
select flag_name
into v_out
from PU_META_PLAT.MD_META_DIM_CODE
where dim_table_id = p1
and flag_code in
(SELECT trim(substr(',' || p2 || ',',
instr(',' || p2 || ',', ',', 1, LEVEL)1,
instr(',' || p2 || ',', ',', 1, LEVEL1) -
instr(',' || p2 || ',', ',', 1, LEVEL) - 1))
FROM dual
CONNECT BY LEVEL =
(length(',' || p2 || ',') -
length(replace(',' || p2 || ',', ',', ''))) / 1 - 1));
return v_out;
exception
when others then
return null;
end;
Oracle函数的使用接收字符返回字符或数值时可以使用dual伪表
1、把小写字符转换成大写
select supper(“smi”) form dual
2、把大写转换成小写
lower(“SMI”)
3、首字母大写
initcap(“smi”)
4、字符串的连接可以使用concat,也可以使用建议使用
concat(“hello”“world”) 结果为helloworld
5、字符串的截?。褂胹ubstr,第一个参数为字符串 , 第二个参数是索引,第三个参数结束索引(开始索引使用0和1效果一样)
substr(hello,0,3) 结果为hel
6、获取字符串长度
length(“hello”)
7、字符串替换,第二个参数为被替换的字符串,第三个是替换的字符串
replace(“hello”,“l”,“x”) 结果为hexxo
1、四舍五入函数ROUND()
默认取整,可以指定保留位数
round(12.523)结果为13
round(12.537,2) 结果为12.54
2、取整TRUNC
默认全部去掉小数,可以指定位数
trunc(12.789) 结果为12
3、取余数MOD
mod(10 , 3) 结果为1
oracle中提供了很多和日期相关的函数 , 包括日期的加减
日期 - 数字 =日期
日期 - 日期 = 数字(天)
1、如:查询员工进入公司的走数
(sysdate - 入职日期)/7
注:当前日期查询select sysdate form dual
2、查询所有员工进入公司的月数
获取两个时间段的月数使用months_between(sysdate,入职日期)
3、获取几个月后的日期:add_months()
如:获取员工三个月后的日期
add_months(sysdate,3)
4、如求出下星期一是什么时候
指定给出下次某日期数next_date()
next_date(sysdate,“星期一”)
5、求日期的最后一天last_day()
求出本月的最后一天
last_day(sysdate)
1、to_char字符串转换函数
如:将所有员工的入职日期的年、月分开
注:在划分时需要通配符
年:yyyy月:mm日:dd
时:HH 分:mi秒:ss
定义时间格式
to_char(sysdate , “yyyy-mm-dd HH24:mi:ss”)
在10以下的月数前面会默认加上前导零 , 去除加上fm
to_char(sysdate , “fmyyyy-mm-dd HH24:mi:ss”)
to_char还可以给数字做格式化
如将员工的工资按三位“ , ”分隔
to_char(工资 , “99,999”) 9代表数字
如果想在钱上加上国家符号
美元使用
中文使用l
to_char(工资,“99,999”)
to_char(工资,“l99,999”)
2、to_number数值转换函数,将字符串转换成数值
to_number(“10”)to_number(“10”)
3、to_date日期转换函数,将字符串数据转换成日期类型
to_date(“1997-05-12”,“YYYY-mm-dd”)1997/05/12
1、空值处理 nvl
如果在查询的时候存在空值的情况可以使用
nvl(comm,0) 当comm的列值为空时,用0代替
2、decode函数
该函数类似于if ...else if ...else
语法:decode(列名/值,search1,result1,search2,result2,default)
decode(中国,中国,我是中国,美国,我是美国 , 其他)
如果为中国返回我是中国 , 为美国返回我是美国,为其他字符则返回其他 。
3、case when 与decode差不多
语法 case when city=中国 then 我是中国
when city=美国 then 我是美国
else 其他
oracle数据库中函数怎么使用oracle数据库中函数较多,而且每个函数都有自己的用法,所以要根据具体的函数查询具体的使用方法,比如oracle怎么设函数:
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1 , 值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
使用方法oracle怎么设函数:
1、比较大小
select
decode(sign(变量1-变量2),-1,变量1,变量2)
from
dual;
--取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的 。
2、此函数用在SQL语句中,功能介绍如下:
Decode函数与一系列嵌套的
IF-THEN-ELSE语句相似 。base_exp与compare1,compare2等等依次进行比较 。如果base_exp和
第i
个compare项匹配,就返回第i
个对应的value
。如果base_exp与任何的compare值都不匹配 , 则返回default 。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值 。一个为NULL的base_exp被认为和NULL
compare值等价 。如果需要的话,每一个compare值都被转换成和第一个compare
值相同的数据类型 , 这个数据类型也是返回值的类型 。
oracle 怎么创建一个函数?create or replace
FUNCTION"函数名"
(
A in number,
B in number,
name in VARCHAR2
)
BEGIN
insert into 表名 values(A B,name);
END 函数名;
//花括号里边就是需要传的参数 , name如果是固定的可以直接写死,就不用传参了
oracle自定义函数create or replace function my_fun return number is
i number := 1;
total number := 1;
begin
while i=20 loop
total := total*i;
i := i 1;
end loop;
return total;
end my_fun;
【oracle怎么设函数 oracle函数用法】关于oracle怎么设函数和oracle函数用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读