Я сталкиваюсь с ошибкой: неверный синтаксис ввода для типа цифры c: "" при выполнении запроса ниже.
Получение параметров в Java
Integer Id_systemUser = systemUser.getId();
Integer userid = systemUser.getId();
MyQuery
Query query = em.createNativeQuery(
"SELECT (SELECT count(*) FROM ResponseTable Where timedate BETWEEN :sentDate and :enddate and Id_systemUser=:Id_systemUser ) AS"
+ "receivecount,(SELECT count(*) FROM ResponseTable Where timedate BETWEEN :sentDate and :enddate and Id_systemUser=:Id_systemUser and processCompletetime IS NOT NULL ) AS processcount,"
+ "(select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where dlr_mask='31' and time BETWEEN :sentDate and :enddate and userid=:userid) AS loadedcount,(select SUM(CAST(msg_cost AS DECIMAL(9,2)))"
+ " from sql_reciept_sms where dlr_mask_smsc_sub='8' and time BETWEEN :sentDate and :enddate and userid=:userid) AS sentcount,(select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where time BETWEEN "
+ ":sentDate and :enddate and userid=:userid and dlr_mask_del_failure='2') AS failprocesscount,(select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where dlr_mask_del_success='1' and time BETWEEN :sentDate"
+ " and :enddate and userid=:userid) AS delicount,(select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where dlr_mask_smsc_rej='16' and time BETWEEN :sentDate and :enddate and userid=:userid) AS "
+ "rejcount,(select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where dlr_mask_smsc_sub='8' and dlr_mask_smsc_rej IS NULL and dlr_mask_del_failure IS NULL and dlr_mask_del_success IS NULL "
+ "and time BETWEEN :sentDate and :enddate and userid=:userid) AS nodelrec,(select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where dlr_mask='31' and dlr_mask_smsc_rej "
+ "IS NULL and dlr_mask_del_failure IS NULL and dlr_mask_del_success IS NULL and dlr_mask_smsc_sub IS NULL and time BETWEEN :sentDate and :enddate and userid=:userid and binfo IS NULL) AS quatmno,"
+ "(SELECT count(*) from sql_reciept_sms where time BETWEEN :sentDate and :enddate and userid=:userid and binfo<>'' and dlr_mask_smsc_rej IS NULL and dlr_mask_del_failure IS NULL and dlr_mask_del_success "
+ "IS NULL and dlr_mask_smsc_sub IS NULL) as failprocess,(Select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where time BETWEEN :sentDate and :enddate and dlr_mask_del_success='1' and dlr_mask_smsc_sub IS"
+ " NULL and userid=:userid) as nosenbdel,(Select SUM(CAST(msg_cost AS DECIMAL(9,2))) from sql_reciept_sms where time BETWEEN :sentDate and :enddate and dlr_mask_del_failure='2' and dlr_mask_smsc_sub IS NULL "
+ "and userid=:userid) as nosenbfail");
Добавление параметров
query.setParameter("Id_systemUser", (int) Id_systemUser);
query.setParameter("userid", (int) userid);
query.setParameter("sentDate", sentDate);
query.setParameter("enddate", enddate);
При выполнении
query.getResultList()
Ошибка
2020-Apr-07 18 WARN SqlExceptionHelper:127 - SQL Error: 0, SQLState: 22P02
2020-Apr-07 18 ERROR SqlExceptionHelper:129 - ERROR: invalid input syntax for type numeric: ""
РЕДАКТ. 1: Это значения, которые не равны 1.
Проблема связана с 3-м подзапросом
(SELECT Sum(Cast(msg_cost AS DECIMAL(9, 2)))
FROM sql_reciept_sms
WHERE dlr_mask = '31'
AND time BETWEEN 'Wed Apr 01 00:00:00 SAST 2020' AND
'Fri Apr 10 00:00:00 SAST 2020'
AND userid = '14630824') AS loadedcount,