Allow big result sets - опция разрешает большие наборы данных, нужна для передачи clob полей. Если опция не установлена данные будут усечены до 255 символов. 5.2 Connector/ODBC Connection Parameters.
Без этой опции все работает отлично, но clob обрезаются до 255 символов. Если опция установлена при загрузке данных возникает ошибка, в которой ничего не написано:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Generic Connectivity Using ODBC]
Программа вылетает на 11 итерации цикла LOOP, в независимости от данных в этой строке.
Для загрузки используется код (PL/SQL):
BEGIN
CURSOR_ID := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@EMS;
DBMS_HS_PASSTHROUGH.PARSE@EMS(CURSOR_ID,'INSERT INTO EMS_CLIENT VALUES (?,?,?,?,?,?,?)');
FOR DATA_SET IN (
SELECT ecs.CLIENT_ID, ecs.CLIENT_EMAIL, ecs.DESCRIPTORS, ecs.CLIENT_BIRTHDAY, ecs.CLIENT_FIRST_NAME,ecs.CLIENT_LAST_NAME,ecs.REC_DATE
FROM EMS_CLIENT_SYNC ecs
) LOOP
tmCLIENT_ID := DATA_SET.CLIENT_ID;
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,1 ,DATA_SET.CLIENT_ID);
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,2 ,DATA_SET.CLIENT_EMAIL);
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,3 ,DATA_SET.DESCRIPTORS);
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,4 ,DATA_SET.CLIENT_BIRTHDAY);
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,5 ,DATA_SET.CLIENT_FIRST_NAME);
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,6 ,DATA_SET.CLIENT_LAST_NAME);
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@EMS(CURSOR_ID,7 ,DATA_SET.REC_DATE);
ROW_COUNT := ROW_COUNT + DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@EMS(CURSOR_ID);
END LOOP;
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@EMS(CURSOR_ID);
COMMIT;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(tmCLIENT_ID);
ROLLBACK;
RAISE;
END;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости