crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Qt, postgresql и хранимые процедуры, RETURN
inforse
  опции профиля:
сообщение 24.4.2014, 12:00
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 16.1.2014
Пользователь №: 4035

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ребят сильно не бейте, не могу никак получить RETURN в переменную из хранимой процедуры

Код процедуры:
CREATE OR REPLACE FUNCTION spex_replic_database_out_test2(character varying, integer)
  RETURNS integer AS
$BODY$
declare pp_day int;
    pp_data timestamp;
    pp_sssdata float;
    pp_Path varchar;
    pp_str varchar;
    pp_nstr int;
    pp_state int;
begin

    pp_Path := $1;
    pp_nstr := $2;
    pp_day := 1;
    pp_state := 1;
...
return pp_state;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;


Код в Qt:
 QString error;
    int res;
    QSqlDatabase dbosnov = QSqlDatabase::database("Osnov");


    QSqlQuery vygruzka(dbosnov);
//    if (!vygruzka.isActive()){
//        error = vygruzka.lastError().text();
//        emit errorSql(error);
//    }
    vygruzka.prepare("SELECT spex_replic_database_out_test2(?, ?)");
    vygruzka.bindValue(0, "/tmp/test/");
    vygruzka.bindValue(1, 200, QSql::Out);
    vygruzka.exec();
    res = vygruzka.boundValue(1).toInt();
    qDebug() << res;


Код брал с документации:
     QSqlQuery query;
     query.prepare("CALL AsciiToInt(?, ?)");
     query.bindValue(0, "A");
     query.bindValue(1, 0, QSql::Out);
     query.exec();
     int i = query.boundValue(1).toInt(); // i is 65


Но я получаю не значение RETURN из процедуры, а значение параметра равное 200.
Как добиться получение RETURN из хранимки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 24.4.2014, 14:18
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


ну дык, какой параметр запросил - тот он тебе и выдал.
первый параметр сам же установил в значение 200. затем его запросил. получил 200. логично.
про чтение результатов запроса:
http://qt-project.org/doc/qt-4.8/sql-sqlstatements.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 15:59