У меня есть большая, но ВРЕМЕННАЯ проблема с ошибкой в Oracle 10g, когда мы вызываем некоторый SQL в веб-приложении Java.Мы не можем быстро исправить или обновить до 11g - что кажется первым «глупым» ответом службы поддержки оракула.Есть обходной путь, но у меня возникают проблемы с этим в PreparedStatements в моем Java-коде.
Фактическая ошибка:
ORA-00600: internal error code, arguments: [kcblasm_1]
Ошибка: Ошибка Oracle 12419392
Обходной путь выполняется
alter session set "_hash_join_enabled" = FALSE;
, прежде чем мы запустим наш вызывающий ошибки SQL.Однако традиционно PreparedStatement принимает один единственный фрагмент SQL:
PreparedStatement stmt = con.prepareSelect("sql statement2");
Возможно ли иметь один вызов PreparedStatement, который выглядит следующим образом:
PreparedStatement stmt = con.prepareSelect("sql statement1; sql statement2;");
Или это возможно простозапускать серию последовательных PreparedStatements один за другим?
Не лучшее время, чтобы получить это с надвигающимся Xmas и сниженной поддержкой и т. д. и т. д., и я действительно надеюсь, что кто-то может помочь.Спасибо.
Редактировать : @jonearles попросил код, так что вот, если он используется.Возможно, это очень специфично для нашего проекта, но кто-то может заметить явную проблему, вызывающую ошибки:
SELECT DISTINCT qm.validator_id,
qm.QM_ID,
u.EMAIL,
qm.creation_dt,
qm.emailed,
qm.valid,
qm.resolved,
qm.new_obs_id,
o.*,
nests.*,
s.*,
l.*,
latc.TENKM
FROM query_man qm,
obs o,
obs_aux_aon nests,
sub s,
location l,
l_atlas_tetrad_coverage latc,
users u
WHERE qm.OBS_ID = o.OBS_ID
AND o.SUB_ID = s.SUB_ID
AND u.user_id = qm.user_id
AND o.obs_id = nests.obs_id(+)
AND s.LOC_ID = l.LOC_ID
AND latc.ATLAS_REGION = 'NKNE'
AND (LENGTH (l.gridref) = 6
AND (SUBSTR(l.gridref,1,3)
|| SUBSTR(l.gridref,5,1)) = latc.TENKM
OR LENGTH (l.gridref) = 4
AND l.gridref = latc.TENKM)
AND qm.RESOLVED IS NULL
ORDER BY latc.tenkm,
l.tetrad