2013-03-25 43 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;