Russian Qt Forum
Ноябрь 23, 2024, 15:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Биндинг переменных в Oracle  (Прочитано 3883 раз)
akaMDA
Гость
« : Март 13, 2013, 09:49 »

SQL запрос
Код:
INSERT INTO A(str) VALUES (:ba) RETURNING A_ID INTO :bId

добавляю бинды

Код:
bindValue(":ba", "AAAAAAAAAAA");
addBindValue(QVariant(QVariant::ULongLong, QSql::Out);

При exec() ошибка - невозможно вставить NULL в str. Если использовать только 1 переменную (:ba или :bId), то все работает. Что я не так делаю?
Записан
dio
Гость
« Ответ #1 : Март 13, 2013, 10:57 »

Попробуйте так:

Код:
bindValue(":ba", "AAAAAAAAAAA");
bindValue(":bId", QVariant(QVariant::ULongLong),QSql::Out);
Записан
akaMDA
Гость
« Ответ #2 : Март 13, 2013, 11:28 »

Пробовал. Но в результате в :bId оказывается всегда 2, а не настоящий id. Сейчас вышел из положения 2 запросами INSERT и UPDATE.
Записан
dio
Гость
« Ответ #3 : Март 13, 2013, 14:19 »

Очень странно. Должно работать правильно.
У Вас значение A_ID формируется триггером? Приведите его код.
Ну и на всякий случай какая у Вас версия Qt? У меня 4.7.4. Win. Данный код работает.
Записан
akaMDA
Гость
« Ответ #4 : Март 14, 2013, 13:42 »

Значение формитуертся триггером, проблем не возникает. Qt 5.0.1
Записан
twp
Гость
« Ответ #5 : Март 15, 2013, 00:24 »

Пробовал. Но в результате в :bId оказывается всегда 2, а не настоящий id. Сейчас вышел из положения 2 запросами INSERT и UPDATE.

Цитата: Assistant
QVariant::QVariant ( Type type )
Constructs a null variant of type type.

2 как раз равно QVariant::ULongLong
т.е. такой код QVariant(QVariant::ULongLong)
создает пустое значение но с типом qlonglong.
А вот если сделать так, что будет?
Код
C++ (Qt)
qlonglong outValue;
bindValue(":bId", outValue, QSql::Out);
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.204 секунд. Запросов: 20.