文章

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 进行授权