Eleneldil G. Arilou (arilou) wrote,
Eleneldil G. Arilou
arilou

Инкапсуляторы, блин

Есть у "Оракла" простой сишный интерфейс OCI. Его, в частности, использует DBD::Oracle. И там они при ошибке вытаскивают информацию о том, на каком символе запроса "Оракл" возмутился. Что весьма полезно для отладки.
А есть ещё сиплюсплюсный интерфейс OCCI. Всё там обёрнуто в классы, ошибки обёрнуты в исключения, наружу торчат только методы. Естественно, есть класс SQLException, потомок std::exception, поддерживает и унаследованный what(), и своим методы имеет getErrorCode() и getMessage(). Вот только информацию о "плохом" месте в запросе он, конечно, не скажет. Чтобы её вытянуть самому - надо манипулятор (handler) запроса, который к моменту поимки исключения может уже и не сохраниться. Т.е. и ловить надо где-то глубже, да ещё и этот манипулятор откуда-то выцарапывать. Вроде бы у класса Statement его попросить можно. Но сколько же гемора до этого докопаться...

(Да, тем, кто любит вопрошать: "И нафига тебе сорцы? Часто ли ты в них смотришь?" - боюсь, без сишных сорцов DBD::Oracle проблем у меня было бы куда больше, а так я хоть нашёл, как это там делается.)
Tags: perl, work
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments