oracle--函数--自定义函数

oralce-自定义函数的模板

create or replace function 函数名(参数1 模式 参数类型)
return 返回值类型
as
变量1 变量类型;
变量2 变量类型;
begin
    函数体;
end 函数名;

实例:
输入:–in:111243140400cu
输出:–out:111243140400cv
规则:
前面12位作为客户编码,后两位作为附加识别码。
把输入的字符串的附加识别码+1后输出
范围:aa-zz

--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就有问题了。。
删除函数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值