oracle--函数--自定义函数
博客介绍了Oracle自定义函数的模板,通过实例展示对输入字符串的处理规则,即前12位为客户编码,后两位附加识别码加1后输出,范围是aa - zz。还提及了使用的相关函数,如length、substr等,以及处理编译错误的方法。
oracle--函数--自定义函数
文章信息
- 原文链接:https://jiayq.blog.csdn.net/article/details/90692806
- 发布时间:2019-05-30 10:38:25
- 阅读量:587
- 分类:oracle专栏收录该内容, 订阅专栏
- 标签:#oracle, #oracle函数, #oracle编译错误解决, #oracle函数对字符串的操作, #编写一个简单的oracle函数
摘要
文章浏览阅读587次。博客介绍了Oracle自定义函数的模板,通过实例展示对输入字符串的处理规则,即前12位为客户编码,后两位附加识别码加1后输出,范围是aa - zz。还提及了使用的相关函数,如length、substr等,以及处理编译错误的方法。
oralce-自定义函数的模板
1
2
3
4
5
6
7
8
create or replace function 函数名(参数1 模式 参数类型)
return 返回值类型
as
变量1 变量类型;
变量2 变量类型;
begin
函数体;
end 函数名;
实例:
输入:–in:111243140400cu
输出:–out:111243140400cv
规则:
前面12位作为客户编码,后两位作为附加识别码。
把输入的字符串的附加识别码+1后输出
范围:aa-zz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
--in:111243140400cu
--out:111243140400cv
CREATE OR REPLACE FUNCTION GETNEXT(SOURCESTR IN VARCHAR2)
RETURN VARCHAR2
AS
customerCode VARCHAR2(100);
suffix VARCHAR2(100);
endch VARCHAR2(100);
ascendch NUMBER;
BEGIN
--1.判断sourcestr是不是customercode重复:customercode的长度等于客户编码的长度12,那么返回customercode+aa
IF LENGTH(sourcestr) = 12 THEN
RETURN sourcestr || 'aa';
--2.普通情况
ELSE
--customercode + suffix重复,suffix+1
--111243140400
customercode := SUBSTR(sourcestr,0,LENGTH(sourcestr) - 2);
--cu
suffix := SUBSTR(sourcestr, -2);
--u
endch := SUBSTR(suffix, -1);
--u++
ascendch := ASCII(endch) + 1;
--ascendch < z ?
IF ascendch <= ASCII('z') THEN
--return customercode + suffix(1) + chr(ascendch)
RETURN customercode || SUBSTR(suffix,0,1)||CHR(ascendch);
ELSE
--return customercode + suffix(1)++ + endch
RETURN customercode || CHR(ASCII(SUBSTR(suffix,0,1)) + 1)||'a';
END IF;
END IF;
END GETNEXT;
length(str)求str长度
substr(str,start,length)对str从start开始截取length长度
ascii(c/str)把c或者str第一个字符转为ascii码
chr(number)把number转为char
||字符串连接
正确的应该是绿色的:

否则会有一个红色的小叉号:
右键选择,编辑下方会给出错误提示信息,修改直到正确。






zz就有问题了。。
删除函数

本文由作者按照 CC BY 4.0 进行授权