một khả năng là in_year không được Crystal chuyển vào hoặc được chuyển vào dưới dạng NULL.
vui lòng xác minh điều này. bạn có thể thêm mã này làm kiểm tra nhanh:
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');
lỗi gì mà ném?
như thể năm trống, chúng tôi sẽ gặp lỗi đó:
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