2013-03-25 88 views
-3
CREATE OR REPLACE FUNCTION evaluation (a DATE,m Number) 
RETURN VARCHAR2 
IS 
BEGIN 
RETURN CASE 
WHEN (floor(sysdate - a) < m) THEN 'Yes' 
ELSE 'No' 
END; 

我在做什么错误,执行下面的代码时,如果我的节目,如错误:错误:ORA-01722:无效数字

Error: ORA-01722: invalid number 
+1

你能告诉我们你是如何调用* *该功能? (确切的值) – 2013-03-25 09:27:29

+0

没有对不起,编译时它拉我这个错误.. – 2013-03-25 09:28:59

+2

编译此过程时不会引发该错误:http://sqlfiddle.com/#!4/65380/1 – 2013-03-25 09:34:41

回答

4

张贴的代码是缺少END;(第一ENDCASE,所以需要第二个来结束该过程),但除了它正在工作,只要输入一个数字而不是不能转换为数字的字符串。

select evaluation(sysdate+3, 2) from dual; 

YES 

select evaluation(sysdate+3, '2') from dual; 

YES 

select evaluation(sysdate+3, 'a') from dual; 

Error: ORA-01722: invalid number 
0

包括另一端@最后.....

CREATE OR REPLACE FUNCTION evaluation (a DATE,m Number) 
RETURN VARCHAR2 
IS 
BEGIN 
RETURN (CASE 
WHEN (floor(sysdate - a) < m) THEN 'Yes' 
ELSE 'No' 
END); 
END;