Не в тему:query.prepare("CALL wfp_kl_list.search_watch_kl(?,?)");
Почему используешь позиционное связываение, ведь Oracle поддерживает именованное.
По теме:А вот как вызвать хранимую функцию, что-то не пойму.
Она описана в пакете WFP_DARBA_UZD
Есть два способа, один из которых зависит от уровня строгости функции в твоем пакете (
инфо), а другой универсальный (но, по-моему, он будет чуть медленней).
1-ый способ:C++ (Qt)
QSqlQuery query;
query.prepare("SELECT wfp_darba_uzd.get_my_neizpild_tasks() FROM DUAL");
if (!query.exec()) {
QMessageBox::information(0, QObject::tr("Error"), query.lastError().databaseText());
return false;
}
int paramOut = -1;
if (query.next())
paramOut = query.value(0).toInt();
Так можно делать, если функция wfp_darba_uzd.get_my_neizpild_tasks() не модифицирует таблицы базы данных.
2-ой способ:C++ (Qt)
QSqlQuery query;
int paramOut = -1;
query.prepare(" BEGIN"
" :param_out := wfp_darba_uzd.get_my_neizpild_tasks();"
" END;");
query.bindValue(":param_out", -1, QSql::Out);
if (!query.exec()) {
QMessageBox::information(0, QObject::tr("Error"), query.lastError().databaseText());
return false;
}
paramOut = query.boundValue(":param_out").toInt();