Проблема
Я работаю над экспортом данных из базы данных Intersystems Cache через драйвер Cache ODBC. Есть конкретная таблица, которая выдает мне сообщение об ошибке. Драйвер ODBC аварийно завершает работу и сообщает об ошибке из системы кэширования. Думаю, мне удалось отследить источник ошибки, но я не знаю, как ее отладить или исправить.
Таблица, которую я пытаюсь извлечь, называется SEDMIHP
.
Вот ошибка:
[Cache Error: <<UNDEFINED>%0AmBd16^%sqlcq.PRD.3284 ^SEDMIHP(4,77)>]
[Location: <ServerLoop - Query Fetch>]
Исследования/пробы и ошибки
Мне удалось открыть Cache Management Studio и найти класс, совпадающий с именем таблицы. Я должен упомянуть, что я впервые работаю с Intersystems Cache, поэтому прошу прощения, если кажусь глупым или неопытным.
В SQLMap
я нашел этот код:
<Data name="DESCRIP_2">
<RetrievalCode> S {DESCRIP_2}=$P($G(^PHPROP({L1},"DESC_CODES")),"\",2) S {DESCRIP_2}=$S($L({DESCRIP_2}):^SEDMIHP($P({DESCRIP_2},","),$P({DESCRIP_2},",",2)),1:{DESCRIP_2})
S {DESCRIP_2}=$E({DESCRIP_2},1,80)
</RetrievalCode>
</Data>
Я думаю, что код здесь вызывает проблему. С моим очень ограниченным пониманием ObjectScript я думаю, что этот код манипулирует текстом/строкой, и, возможно, если в данных есть неопределенное или неправильное значение, это приводит к тому, что эти функции вызывают ошибку?
У меня ограниченный доступ к порталу управления кэшем, и я могу найти таблицу в схеме SQL и выполнить к ней запрос. Около 300 строк данных загружаются, прежде чем появляется та же ошибка, что и выше, и она прекращает загрузку строк. Вот почему я думаю, что есть плохие данные.
Я пытался использовать ISNULL()
и IFNULL()
в операторе SELECT, чтобы попытаться пропустить любые неверные данные, но каждый раз появлялась одна и та же ошибка в одном и том же месте.
Вопросы
- Есть ли простое решение со стороны SQL, которое может избежать этой ошибки?
- Можно ли что-нибудь сделать с кодом класса в Studio для отладки или получения дополнительной информации об этой ошибке?
Любая помощь приветствуется!
Дополнительная информация
Версия кеша: Cache for OpenVMS/IA64 V8.4 (Itanium) 2012.1.5 (Build 956 + Adhoc 12486) 17-APR-2013 19:49:58.07