crossplatform.ru

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

> символ ";" вызывает ошибку в запросе, хочу выполнить запрос со вставкой/удалением нескольких строк
FantasyOr
  опции профиля:
сообщение 12.5.2011, 16:38
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

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




Репутация:   0  


Здравствуйте.
Работаю с oracle, моделью непользуюсь, использую QSqlQuery.

есть желание в одном запросе добавлять/удалять несколько строк

"insert into ADDRESSEES(ADR_ID, FULL_NAME, PRIORITY_CHANNEL, PRIORITY_FORMAT) values( 10, 'ZOI4', 2, 0);
insert into ADDRESSEES(ADR_ID, FULL_NAME, PRIORITY_CHANNEL, PRIORITY_FORMAT) values( 11, 'ZORG', 1, 1);
insert into ADDRESSEES(ADR_ID, FULL_NAME, PRIORITY_CHANNEL, PRIORITY_FORMAT) values( 12, 'MOPS', 1, 0);"

дабы не беспокоить сервер по пустякам много раз.

Этот запрос не выполняется, пишется ошибка "ORA-00911: invalid character Unable to execute statment"
проблема точно в ";", ибо когда оставляю 1 insert, без ";" - запрос выполняется, когда дописываю ";" - появляется эта ошибка.

Может кто боролся с этой ошибкой? подскажите пожалуйста.

//-----------------------------------
bind'ы не предлагать, их все равно приходится по одной записи exec'лить (простите меня за мой французский)

есть:
bool QSqlQuery::execBatch ( BatchExecutionMode mode = ValuesAsRows )
но он как-то странно (нелогично с моей точки зрения) работает.

Пример из документации:
 QSqlQuery q;
q.prepare("insert into myTable values (?, ?)");

QVariantList ints;
ints << 1 << 2 << 3 << 4;
q.addBindValue(ints);

QVariantList names;
names << "Harald" << "Boris" << "Trond" << QVariant(QVariant::String);
q.addBindValue(names);

if (!q.execBatch())
qDebug() << q.lastError();


The example above inserts four new rows into myTable:
1 Harald
2 Boris
3 Trond
4 NULL


т.о. нужно находить данные поколонково, что странно(нелогично с моей точки зрения).
у execBatch есть параметр:
//--------
QSqlQuery::ValuesAsRows - Updates multiple rows. Treats every entry in a QVariantList as a value for updating the next row.
QSqlQuery::ValuesAsColumns - Updates a single row. Treats every entry in a QVariantList as a single value of an array type.
//--------

и все бы хорошо, но напрягает вот что: ValuesAsColumns - Updates a single row...

и как быть...

подскажите пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 1.12.2024, 12:45