13 октября 2010

Qt и oracle.

Значит есть в postgresql такая возможность как returning clause. Если сделать update, insert или delete, то можно получить значения строки используя конструкцию
returning [column1 [,column2]] | *
Для клиентского приложения, и для Qt в частности, это будет выглядеть так, будто команда вернула некоторый recordset.
Но не таким путем решается задача в oracle. В oracle необходимо конструировать следующее выражение:
returning column1 into :colunm1outvar
Затем производить связывание out переменной QSqlQuery::bindValue(":column1outvar", QVariant(QSqlField::type()), QtSql::Out);
А после QSqlQuery::exec(), получить связанные значения.
Причем то, что я написал только одну переменную не ошибка. На большем количестве oracle выдает сообщение о несвязанных переменных.
Возможно это ошибка QtSqlOci плагина, возможно нет. Вывод который мне хочеться сделать, хотя рано мне еще выводы делать: oracle большая самодостаточная система, к которой сторонние приложения не допускаются, хотите автоматизацию бизнес процесса, делайте только с помощью продуктов oracle, никаких сторонних библиотек; ну а если хочеться и мощность (триггеры, функции) и простоту, то тогда выбор в пользу postgresql.

Комментариев нет:

Отправить комментарий