Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Aufrufprozedur vom Orakel zum Kristallbericht

Eine Möglichkeit ist, dass in_year nicht von Crystal oder als NULL übergeben wird.

Bitte überprüfen Sie dies. Sie können diesen Code als schnellen Test hinzufügen:

  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');

welchen Fehler wirft das?

als ob das Jahr null wäre, würden wir diesen Fehler bekommen:

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