Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных? / 23 сообщений из 23, страница 1 из 1
21.07.2019, 18:20
    #39839697
seg856
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
...
Рейтинг: 0 / 0
21.07.2019, 19:24
    #39839707
seg856
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Например:

Код: plaintext
1.
2.
3.
4.
if (!query.exec("call autorization ('admin','202CB962AC59075B964B07152D234B70')")) {
        qDebug() << "no";
       
    }



хранимая процедура autorization() возвращает 3 выборки данных
...
Рейтинг: 0 / 0
21.07.2019, 21:41
    #39839728
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
...
Рейтинг: 0 / 0
22.07.2019, 00:39
    #39839758
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
seg856хранимая процедура autorization() возвращает 3 выборки данныхОтвет дали. Но с точки зрения архитектуры это не очень красиво, возвращать несколько наборов.
...
Рейтинг: 0 / 0
22.07.2019, 01:25
    #39839759
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
seg856, дружище мне кажется ты не тем занят. Это не тема топика С++ спрашивать что делать с тремя выборками.
Ты должен найти автора этой процедуры и спросить его какого хрена дескыть 3 выборки? Баг это? Или ожидаемое
поведение. Может индекс уникальности был сломан? И в таблицу насовали дублей?
Может была неверная миграция или слияние баз?

Это - более важные вопросы.
...
Рейтинг: 0 / 0
22.07.2019, 02:40
    #39839763
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
maytonМожет индекс уникальности был сломан? И в таблицу насовали дублей?

Не "три записи", а "три выборки". У MS есть уникальная фича: вернуть из процедуры
несколько рекордсетов (причём даже разных форматов). Дурные последствия тяжёлого детства и
отсутствия транзакций.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.07.2019, 06:37
    #39839769
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
---MS есть уникальная фича

это не уникальная фича MS.

процедура может иметь:
1. парамeтры output
2. результат операции RETURN
3. результат (ы) операции SELECT

Как вы все вернете? И сделано это было не только в MSSQL
...
Рейтинг: 0 / 0
22.07.2019, 06:59
    #39839771
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
LepsikКак вы все вернете? И сделано это было не только в MSSQLя тоже однажды думал, как в жабе работают при отсутствии двух и более out параметров из метода.
Но ведь все работают же)).
Знаете как?
...
Рейтинг: 0 / 0
22.07.2019, 09:56
    #39839800
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Dimitry SibiryakovmaytonМожет индекс уникальности был сломан? И в таблицу насовали дублей?

Не "три записи", а "три выборки". У MS есть уникальная фича: вернуть из процедуры
несколько рекордсетов (причём даже разных форматов). Дурные последствия тяжёлого детства и
отсутствия транзакций.

Возможно так. Пускай автор подтвердит.
...
Рейтинг: 0 / 0
22.07.2019, 12:43
    #39839885
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Lepsikэто не уникальная фича MS.

Уникальная, уникальная. Если, конечно, не считать Сибейз, от которого оно форкнулось,
чем-то отличающимся.

Lepsikпроцедура может иметь:
1. парамeтры output
2. результат операции RETURN
3. результат (ы) операции SELECT
1. Может, но это таки возвращаемые параметры, а не наборы данных.
2. Процедура - не может, только функция.
3. А вот это и есть уникальная фича МС, когда результат любого select в процедуре сразу
лезет наружу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.07.2019, 15:15
    #39839979
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Lepsik---MS есть уникальная фича

это не уникальная фича MS.

процедура может иметь:
1. парамeтры output
2. результат операции RETURN
3. результат (ы) операции SELECT

Как вы все вернете? И сделано это было не только в MSSQL
а зачем ВСЁ возвращать?
output это и есть RETURN
и SELECT может быть RETURN-ом, либо внутри остаться
а может она вообще ERROR NOTICE вернёт
это процедура решает, что ей возвращать
...
Рейтинг: 0 / 0
24.07.2019, 10:36
    #39840817
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
PetroNotC Sharpseg856хранимая процедура autorization() возвращает 3 выборки данныхОтвет дали. Но с точки зрения архитектуры это не очень красиво, возвращать несколько наборов.

Что некрасивого?
...
Рейтинг: 0 / 0
24.07.2019, 10:37
    #39840819
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Dimitry SibiryakovmaytonМожет индекс уникальности был сломан? И в таблицу насовали дублей?

Не "три записи", а "три выборки". У MS есть уникальная фича: вернуть из процедуры
несколько рекордсетов (причём даже разных форматов). Дурные последствия тяжёлого детства и
отсутствия транзакций.


Она вовсе не уникальная, многие СУБД позволяют такое делать.
Оракл, MySQL, Sybase ASE. Уверен, что и другие могут.
...
Рейтинг: 0 / 0
24.07.2019, 10:38
    #39840820
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
PetroNotC SharpLepsikКак вы все вернете? И сделано это было не только в MSSQLя тоже однажды думал, как в жабе работают при отсутствии двух и более out параметров из метода.
Но ведь все работают же)).
Знаете как?

Возвращают кортежи.
...
Рейтинг: 0 / 0
24.07.2019, 10:59
    #39840830
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
MasterZivЧто некрасивого?в архитектуре конечно нет однозначности. Но.... Немасштабируемо и труднее работать странзакциями. Это как пакетная вставка. Есть пакетная сразу на 1000 записей. Но она использкется только в 1% юз кейсов. Например, массовая вставка. Вот и сабж используется редко так можно сделать задачу и без этого.

MasterZivОна вовсе не уникальная, многие СУБД позволяют такое делать.многие субд имеют наследование, xml в базе. Но опять же это мало используется

MasterZivВозвращают кортежи.нет. Пишут 3 метода вместо одного с out1, out2, ou3. Как правило сами методы более понятные становятся.
...
Рейтинг: 0 / 0
24.07.2019, 11:48
    #39840875
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
MasterZivОракл, MySQL

Эту пару можешь вычеркнуть, они не позволяют получить несколько резалтсетов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.07.2019, 13:54
    #39840947
teo609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
PetroNotC SharpMasterZivЧто некрасивого?в архитектуре конечно нет однозначности. Но.... Немасштабируемо и труднее работать странзакциями.

Например, для отчета нужно несколько рекордсетов. Есть одна ХП которая их возвращает. Далее функция формирования отчета получает 1 шаблон оформления и 1 набор рекордсетов. Удобно.
При формировании данных для отчета можно сделать одним селектом большую простыню данных во временную таблицу, ничего лочить не надо, далее из нее можно сами рекордсеты получить, или надергать временных таблиц поменьше и получить рекордсеты по ним. Тоже удобно.
А если делать несколько вызовов ХП по 1 рекордсету, надо как-то гарантировать, что во временных таблицах для этих рекордсетов данные будут одними и теми же, чтобы они не противоречили себе. Придется вводить какое-то управление этими временными таблицами, либо лочить основные таблицы и формировать несколько раз, в вызывающем коде иметь контейнеры для рекордсетов.
Мне кажется что править и вызывать для получения нескольких рекордсетов одну ХП удобнее чем несколько.
...
Рейтинг: 0 / 0
24.07.2019, 14:13
    #39840958
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
teo609,
У тебя весь пример про отчетники. А это вешь в себе. Это монолит.
На него обычные правила построения ИС не действуют.
Я там вообще из ХП возвращал
case.... "<b>" +field + </b>
То есть смесь данных и стилей/представления.
Также и ОРМ в отчетниках не делают и т.д.
Если санкций на MS не будет, делай так))))).
Если решения шире чем одна MS, не делай так.
Имхо
...
Рейтинг: 0 / 0
24.07.2019, 15:01
    #39840985
Acce_Ekb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
PetroNotC Sharpteo609,
У тебя весь пример про отчетники. А это вешь в себе. Это монолит.

Это не очень редкий пример из жизни.
Вычисляем что-то, а вернуть хотим в нормализованном виде, в нескольких связанных рекордсетах, а не мешать все в одну широкую таблицу.
Вызов процедуры несколько раз не подходит, т.к. приходится повторять вычисления несколько раз.
Да, именно в отчетах часто встречается такой вариант.

Просто удивительно - кто сталкивался с таким, с полуслова понимают о чем речь. Кто не сталкивался - начинают нести про неудачную архитектуру и монолит.
...
Рейтинг: 0 / 0
24.07.2019, 15:08
    #39840987
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Acce_EkbПросто удивительно - кто сталкивался с таким, с полуслова понимают о чем речь. Кто не сталкивался - начинают нести про неудачную архитектуру и монолит.ну почему. Я люблю и двухзвенку с бизнес логикой (БЛ) в СУБД и трехзвенку с БЛ _вне бд_.
Тогда все твои аргументы идут лесом.
Я не максималист.

Acce_EkbВычисляем что-то, а вернуть хотимвернуть куда?
В хранимке и вычисляй.
Один ко многим прекрасно возвращается по одному кортежу с код повыше уровнем.
Acce_EkbВызов процедуры несколько раз не подходит, т.к. приходится повторять вычисления несколько раз.
А ты не гоняй туда сюда данные для вычислений.
...
Рейтинг: 0 / 0
24.07.2019, 15:12
    #39840989
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
Acce_Ekbвернуть хотим в нормализованном видедля кого нормализация? Опять отчетник?
А с ораклом как мучаются без данного действа священного?
...
Рейтинг: 0 / 0
24.07.2019, 16:52
    #39841047
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
PetroNotC SharpНемасштабируемо и труднее работать странзакциями. Это как пакетная вставка. Есть пакетная сразу на 1000 записей. Но она использкется только в 1% юз кейсов. Например, массовая вставка. Вот и сабж используется редко так можно сделать задачу и без этого.А транзакции это что - всегда только пакетная вставка в одну сущность?
...
Рейтинг: 0 / 0
24.07.2019, 18:00
    #39841077
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных?
AmKad,
Ну вы же держите ресурс курсор?
Вместого чтобы работать с городами РФ вы выгружаете сразу улицы и районы?
Даже если не нужны. Даже если там ленивая загрузка.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как обрабатывать SQLзапрос на QT C++, если запрос возвращает 2 набора данных? / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]