我正在尝试创建一个用其他人替换一个字符的新功能:
CREATE OR REPLACE FUNCTION TEST (sifra in varchar2)
RETURN VARCHAR2 AS
sifra1 varchar2(16);
BEGIN
select case when instr(sifra,'A') >0 then replace(sifra, 'A', '0')
when instr(sifra,'B') >0 then replace(sifra, 'B', '1')
when instr(sifra,'C') >0 then replace(sifra, 'C', '2')
when instr(sifra,'D') >0 then replace(sifra, 'D', '3')
when instr(sifra,'E') >0 then replace(sifra, 'E', '4')
when instr(sifra,'F') >0 then replace(sifra, 'F', '5')
when instr(sifra,'G') >0 then replace(sifra, 'G', '6')
when instr(sifra,'H') >0 then replace(sifra, 'H', '7')
when instr(sifra,'I') >0 then replace(sifra, 'I', '8')
when instr(sifra,'J') >0 then replace(sifra, 'J', '9')
end
into sifra1 from dual;
return sifra1;
END TEST;
但是当我尝试在查询中使用该函数时,我将所有null
值作为输出。
select test(sifra) from iis.artikli
这里有什么问题?
答案 0 :(得分:0)
解决了,我没有把它放在其他情况下。
create or replace FUNCTION test (sifra in varchar2)
RETURN VARCHAR2 AS
sifra1 varchar2(16);
BEGIN
select case when instr(sifra,'A') >0 then replace(sifra, 'A', '0')
when instr(sifra,'B') >0 then replace(sifra, 'B', '1')
when instr(sifra,'C') >0 then replace(sifra, 'C', '2')
when instr(sifra,'D') >0 then replace(sifra, 'D', '3')
when instr(sifra,'E') >0 then replace(sifra, 'E', '4')
when instr(sifra,'F') >0 then replace(sifra, 'F', '5')
when instr(sifra,'G') >0 then replace(sifra, 'G', '6')
when instr(sifra,'H') >0 then replace(sifra, 'H', '7')
when instr(sifra,'I') >0 then replace(sifra, 'I', '8')
when instr(sifra,'J') >0 then replace(sifra, 'J', '9')
else sifra
end
into sifra1 from dual;
return sifra1;
END test;
现在工作得很好