एक संभावना यह है कि in_year को क्रिस्टल द्वारा पारित नहीं किया जा रहा है या NULL के रूप में पारित नहीं किया जा रहा है।
कृपया इसे सत्यापित करें। आप इस कोड को एक त्वरित जांच के रूप में जोड़ सकते हैं:
if (trim(in_year) is null) or length(in_year != 4))
then
raise_application_error(-20000, 'year is invalid: ' || in_year);
end if;
inv_date := to_date('31-01-' || in_year || ' 23:59:59', 'DD-MM-YYYY HH24:MI:SS');
वह क्या त्रुटि फेंकता है?
जैसे कि वर्ष शून्य था, हमें वह त्रुटि मिलेगी:
SQL> declare
2 inv_date DATE;
3 in_year varchar2(42) ;
4 begin
5 inv_date := to_date('31-01-' || in_year || ' 23:59:59', 'DD-MM-YYYY HH24:MI:SS');
6 end;
7 /
declare
*
ERROR at line 1:
ORA-01850: hour must be between 0 and 23
ORA-06512: at line 5