在我的程序包中,我尝试编写一个将数字转换为单词的PL / SQL函数。
我的功能:
FUNCTION f_numbertoword(pn_number NUMBER) RETURN VARCHAR2 IS
f_numbertoword VARCHAR2(34);
BEGIN
f_numbertoword := ( <-- Here the 'Statement Ignored' error is raised
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(pn_number), <-- Here the PLS-00306 error is raised
'0','zero '),
'1','one '),
'2','two '),
'3','three '),
'4','four '),
'5','five '),
'6','six '),
'7','seven '),
'8','eight '),
'9','nine ');
RETURN f_numbertoword;
END;
这给我提供了以下错误:
错误:PL / SQL:忽略语句
错误:PLS-00306:调用的参数的数量或类型错误 &#39; REPLACE&#39;
我不知道如何处理这些错误,或者你甚至建议一种更好,更美观的功能风格来达到相同的效果。例如
f_numbertoword(123);
返回:
&#39;一二三&#39;
由于
答案 0 :(得分:0)
或者您也可以使用这种方式:
{{1}}
输出
{{1}}
答案 1 :(得分:0)
错误消息非常明显。根据{{3}},REPLACE
函数接受两个或三个参数。在引发PLS-00306错误的行上,您使用一个参数调用它。
答案 2 :(得分:0)
REPLACE和括号的嵌套无效。修复如下:
FUNCTION f_numbertoword(pn_number NUMBER) RETURN VARCHAR2 IS
f_numbertoword VARCHAR2(34);
BEGIN
f_numbertoword := REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(pn_number,
'0','zero '),
'1','one '),
'2','two '),
'3','three '),
'4','four '),
'5','five '),
'6','six '),
'7','seven '),
'8','eight '),
'9','nine ');
RETURN f_numbertoword;
END;