Посмотрите документацию IBM для оператора INSERT в ESQL, возможно, стоит попробовать.
INSERT INTO Database.dkralj(NAME) VALUES(InputRoot.XMLNSC.emp.name);
Если странные вещи все еще происходят, я бы попробовал строковую константу, чтобы избежать проблем с кодировкой символов во входном сообщении.
INSERT INTO Database.dkralj(NAME) VALUES('TheEmpValue');
До этого утверждения в вашем коде
SET OutputRoot.XMLNSC.DBINSERT.STATUS='SUCCESS';
Вы должны проверить успешность или нет, используя встроенные SQLSTATE, SQLCODE, SQLERRORTEXT для проверки результата вашего вызова.
IF NOT ((SQLCODE = 0) OR (SQLSTATE = '01000' AND SQLNATIVEERROR = 8153)) THEN
-- Do something about the error.
-- The check of SQLSTATE and SQLNATIVEERROR covers warnings
-- The 8153 is for Microsoft SQL Server other databases may use a different value
END IF;
Также проверьте кодовые страницы aka CodedCharSetId данных исходной системы, сообщение в IIB и кодовую страницу базы данных по умолчанию.
Используйте mqsicvp MYBROKER -n ODBC_DB_NAME, чтобы получить другие сведения о соединении, которое необходимо использовать -n, чтобы получить подробности.
Используйте что-то вроде DBeaver для добавления некоторых данных. Посмотрите на тип данных, указанный для поля.
В соответствии с вашим комментарием ниже и моим ответом здесь приведен пример заявления PASSTHRU. Обратите внимание на использование? чтобы избежать SQL-инъекций.
PASSTHRU('SELECT RTRIM(A.EMPLID) AS EMPLID,
RTRIM(A.ADDRESS_TYPE) AS ADDRESS_TYPE,
RTRIM(A.ADDR_TYPE_DESCR) AS ADDR_TYPE_DESCR,
CAST(RTRIM(A.EFFDT) AS DATE) AS EFFDT,
RTRIM(A.EFF_STATUS) AS EFF_STATUS,
RTRIM(A.ADDRESS1) AS ADDRESS1,
RTRIM(A.ADDRESS2) AS ADDRESS2,
RTRIM(A.ADDRESS3) AS ADDRESS3,
RTRIM(A.ADDRESS4) AS ADDRESS4,
RTRIM(A.CITY) AS CITY,
RTRIM(A.STATE) AS STATE,
RTRIM(A.POSTAL) AS POSTAL
FROM ADDRESS_VW AS A
WHERE UPPER(A.EMPLID) = ?') VALUES(AggrRef.EmployeeID)