Преобразование целого числа в часы и минуты - получение числового значения PL / SQL или ошибки значения - PullRequest
0 голосов
/ 04 ноября 2018

Я получаю

ORA-06502 PL / SQL ошибка числового значения или значения

когда я пытаюсь выполнить этот оператор из построителя отчетов 6i и базы данных Oracle 11g.

select to_char(to_date(lateby, 'sssss'), 'mi:ss') 
from attendancelogs   
where emp_no = :emp_no 
  and attendancedate = :dat;

late    number(15);

Тот же оператор при запуске под SQL * Plus работает без ошибок и извлекает значения так, как я хочу.

Любая помощь будет высоко ценится.

С уважением, Mac

1 Ответ

0 голосов
/ 04 ноября 2018

Это может быть ошибка отчетов, я не знаю, но в качестве обходного пути вы можете попробовать обернуть это в хранимую процедуру в базе данных следующим образом:

CREATE OR REPLACE FUNCTION sssss_to_miss ( p1 in varchar2 ) RETURN VARCHAR2 IS
BEGIN
   RETURN ( to_char(to_date(p1, 'sssss'), 'mi:ss') );
END;
/

Тогда в коде отчетов:

select sssss_to_miss (lateby) 
from attendancelogs   
where emp_no = :emp_no 
  and attendancedate = :dat;

late    number(15);

В качестве альтернативы, что-то вроде (не проверено):

select to_char(to_number(lateby)/60,'00') || ':' || to_char(mod(to_number(lateby),60),'00') 
    from attendancelogs   
    where emp_no = :emp_no 
      and attendancedate = :dat;
...