Есть MFC MDI программа. Подключаюсь к базе через ODBC (наследую 2 класса от CDatabase и CRecordset). В базе уйма хранимых процедур и функций с in/out параметрами. Каким образом их следует исполнять, чтобы после исполнения получить изменённый значения этих in/out параметров ?
База, например, Oracle (т.е. трюк с select * from PROC_NAME не пройдёт)
Неужели никто не сталкивался ????????
Здравствуйте, screw_cms, Вы писали:
_>Есть MFC MDI программа. Подключаюсь к базе через ODBC (наследую 2 класса от CDatabase и CRecordset). В базе уйма хранимых процедур и функций с in/out параметрами. Каким образом их следует исполнять, чтобы после исполнения получить изменённый значения этих in/out параметров ?
_>База, например, Oracle (т.е. трюк с select * from PROC_NAME не пройдёт)
_>Неужели никто не сталкивался ????????
Глянь сюда —
http://www.codeguru.com/mfc_database/storproc.shtml
Нашёл часть проблемы. Уменя есть 2 класса: CMyDatabase и CMyREcordset — потомки CDatabase и CRecordset. Там осуществляется парараметризация полей таблиц/процедур и параметров хранимых процедур. И вся эта кухня отказывалась работать с базой FireBird. (ODBC драйвер — {Gemini InterBase ODBC Driver 2.0}). Затык был в том что CDatabase::ExecuteSQL("{CALL TEST(10)}") делал вид что исполнение произошло (т.е. возвращал OK) — хотя на самом деле не происходило НИЧЕГО. Однако ExecuteSQL("execute procedure TEST(10)") отрабатывался на УРА. Попробовал перенести процедуру в Oracle — там всё запустилось без проблем.
Всвязи с этим возникает другой вопрос — что же это ? Кривой драйвер "птички" или в ней с выходными параметрами надо в принципе работать только как с "select * from TEST(10)" ???
Кстати, уважаемые программисты, работающие с MSSQL — а как там отрабатываются похожие вызовы ? Проверить самостоятельно не имею возможности...
Здравствуйте, Alexod, Вы писали:
A>Глянь сюда — http://www.codeguru.com/mfc_database/storproc.shtml
на самом деле глядел. А вот здесь все даже поинтереснее:
http://www.codeproject.com/database/MyRecordset.asp