【发布时间】:2015-05-14 02:30:53
【问题描述】:
当我执行这个函数时,它被编译并且没有给出任何错误,但是当在 select 语句中使用这个函数时它给出了错误。请帮我解决这个问题。选择查询是这样的。
从对偶中选择 numericformat(facval,5);
create or replace FUNCTION NumericFormat
(num IN decimal,
decimals IN int
)
RETURN VARCHAR2
IS
ReturnVal VARCHAR(50) ;
sPDecFormat VARCHAR(20) ;
sDecFormat VARCHAR(50) ;
counter INT;
BEGIN
counter := 4 ;
sPDecFormat :='.00';
WHILE counter<=decimals
LOOP
IF counter > 2 then
sPDecFormat :=sPDecFormat + '0';
counter :=counter+1;
END IF;
END LOOP;
sDecFormat := '###0' + sPDecFormat ;
ReturnVal := TO_CHAR(num,sdecformat);
RETURN ReturnVal;
END NUMERICFORMAT;
错误是错误报告:
SQL Error: ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at "ACC07.NUMERICFORMAT", line 21
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause:
*Action:
【问题讨论】:
-
请格式化您的代码。在编译没有错误之前,您不能调用您的函数。它有很多。
-
我已经编译它没有给出任何错误。它给出以下消息。警告:执行已完成,警告 FUNCTION NUMERICFORMAT 已编译。
-
警告意味着它有你需要修复的错误。在 END 语句后添加 SHOW ERRORS 以查看它们。或者在 SQL Developer 中找到数据库对象列表中的函数并点击它来查看错误。
-
@AdiChava 这根本不是 Oracle 语法。该函数永远不会编译时出现如此多的语法错误。目前还不清楚你在问什么。您能用简单的话解释一下业务需要什么吗?
-
在 SQL 和 PL/SQL 语句中以
;终止:docs.oracle.com/cd/E11882_01/appdev.112/e25519/… 请阅读有关如何声明变量的手册:docs.oracle.com/cd/E11882_01/appdev.112/e25519/… 并且您需要阅读如何声明参数: docs.oracle.com/cd/E11882_01/appdev.112/e25519/…