【发布时间】:2020-12-01 15:53:27
【问题描述】:
我需要用下面的sql做一个函数
此sql将数字转换为字母
With
Numero as (
select 3 N from dual
)
,
PreProcesado1 as (
select N
, floor(mod(N, 10)) Unidades
from Numero
)
select N, case Unidades
when 0 then ''
when 1 then 'one'
when 2 then 'two'
when 3 then 'three'
when 4 then 'four'
when 5 then 'five'
when 6 then 'six'
when 7 then 'seven'
when 8 then 'eight'
when 9 then 'nine'
end
end
from PreProcesado1;
我是这样做的,但它不起作用,必须有一个输入参数,在这种情况下是entry_numero,应该转换
create or replace function fun_departamento(entry_numero number)
return varchar2 is
response varchar2(120);
begin
With
Numero as (
select entry_numero N from dual
)
,
PreProcesado1 as (
select N
, floor(mod(N, 10)) Unidades
from Numero
)
select N, case Unidades
when 0 then ''
when 1 then 'one'
when 2 then 'two'
when 3 then 'three'
when 4 then 'four'
when 5 then 'five'
when 6 then 'six'
when 7 then 'seven'
when 8 then 'eight'
when 9 then 'nine'
end
end
into response
from PreProcesado1;
return response;
end;
/
我收到此错误,非常感谢您的帮助
PL/SQL: SQL Statement ignored
PL/SQL: ORA-00947: not enough values
【问题讨论】:
-
您正在尝试选择值并返回到一个变量。要么在主选择中删除 N,要么在 INTO 子句中再添加一个变量。而且我认为 Case 语句中存在一个冗余 END。