WAYFARERТолько это должно происходить не просто в рамках одной сессии, а в рамках одной транзакции.
Очень интересное утверждение. Предлагаю вам выполнить следующую процедуру:
- Код: Выделить всё
Var
V1 : Integer;
Begin
DBaseL.StartTransaction;
With QrL Do
Begin
If Active Then Close;
SQL.Text := 'Set @v1 = 5';
ExecSQL;
DBaseL.Close;
DBaseL.Open;
SQL.Text := 'Select @v1';
Open;
V1 := Fields[0].AsInteger;
Close
End;
DBaseL.EndTransaction
End;
DBaseL - TMySQL80Connection
QrL - TSQLQuery
Когда нарветесь на ошибку в строке V1 := Fields[0].AsInteger; можете, для разнообразия, закомментировать открытие и закрытие транзакции и реконнект коннекшена и повторить процедуру. Судя по вашим постам, результат вас должен удивить. Потому как динамические переменные в MySQL, обозначенные одной собачкой, используются исключительно в рамках конкретной сессии. Если сессия обрывается, никакая транзакция не поможет получить эти данные
А вот это как раз очень плохой пример в вашем случае.
Я так понимаю, вы, как и предыдущие гениальные ораторы, не удосужились прочитать весь топик. Вот это как раз совсем не мой случай. Я отвечал на конкретное утверждение, что юнидаковская TQuery не сможет работать с двумя наборами данных, если на вход ей подать скрипт с двумя селектами. Я доказал, что может. К моему примеру, из-за которого я открыл этот топик, это никакого отношения не имеет
Добавлено спустя 11 минут 17 секунд:MaratIskу меня впечатление, вы 30 лет не своим делом занимались
Ваши впечатления меня волнуют меньше всего. А если учесть, что подобные заявления вы всерьез считаете аргументами в подобных дискуссиях, то у меня складывается впечатление, что вы, во-первых, дурак, во-вторых, хам. Чтобы оживить ваши впечатления, выполните в Лазарусе код, который я привел. Хотя, вряд ли вы это будете делать... Можно, нечаянно, и впечатления порушить...
Добавлено спустя 1 час 24 минуты 41 секунду:stsну судя по этому вы понятие не имеете что такое транзакции, которые как раз и придумали на этот случай, в случае если по среди выполнения скрипта свалися соединение то произойдет откат изменений и можно спокойно запустить скрипт заново.
естественно для этого надо убрать автокомит
Не надоело бред нести? Я уже несколько раз тонко намекал, что прежде, чем отвечать, надо, для разнообразия, прочесть весь топик. При чем тут транзакции? О каких изменениях идет речь? Я хоть что-то упоминал об изменениях?
опять же если бы вы разбирались в вопросе то знали бы что в делфе нет opennext, а в том поделии которое сейчас, говнокодеры добавили.
Я так понимаю, что нынешнюю версию 12.1 от Embarcadero вы за Дельфи вообще не считаете? В FireDac и DBGo есть NextRecordSet
- Код: Выделить всё
ADQuery1.FetchOptions.AutoClose := False;
ADQuery1.SQL.Text := 'select 1 as i; select ''qwe'' as s';
ADQuery1.Open;
ShowMessage(ADQuery1.Fields[0].FieldName + ' ' + ADQuery1.Fields[0].AsString); // output "i 1"
ADQuery1.NextRecordSet;
ShowMessage(ADQuery1.Fields[0].FieldName + ' ' + ADQuery1.Fields[0].AsString); // output "s qwe"
ADQuery1.Close;