[решено] Получение результата выполнения SQLQuery.ExecSQL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

[решено] Получение результата выполнения SQLQuery.ExecSQL

Сообщение donpadlo » 14.11.2011 16:43:30

Нужно узнать не просто упешно/не успешно выполнен запрос. А Например сколько записей таким образом затронуто выполнением запроса. Т.е. реализовать чтото типа:

form1.SQLQuery1.Active:=false;
form1.SQLQuery1.SQL.Clear;
form1.SQLQuery1.sql.add('UPDATE config SET param=:param WHERE nameparam =:nameparam;');
form1.SQLQuery1.Params.ParamByName('nameparam').AsString:=nameparam;
form1.SQLQuery1.Params.ParamByName('param').AsString:=param;
form1.SQLQuery1.ExecSQL;
if РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ЗАПРОСА=0 then
begin
form1.SQLQuery1.Active:=false;
form1.SQLQuery1.SQL.Clear;
form1.SQLQuery1.sql.add('INSERT INTO config VALUES (null,:param,:nameparam)');
form1.SQLQuery1.Params.ParamByName('nameparam').AsString:=nameparam;
form1.SQLQuery1.Params.ParamByName('param').AsString:=param;
form1.SQLQuery1.ExecSQL;
end;

Узнавать предварительно есть данный параметр в базе или нет, не кошерно...
Последний раз редактировалось donpadlo 15.11.2011 09:53:33, всего редактировалось 2 раз(а).
Аватара пользователя
donpadlo
новенький
 
Сообщения: 58
Зарегистрирован: 18.08.2011 09:14:53

Re: Получение результата выполнения SQLQuery.ExecSQL

Сообщение WAYFARER » 14.11.2011 23:55:19

donpadlo SQLQuery1.ExecSQL в качестве результата возвращает количество обработанных записей.

Добавлено спустя 21 минуту 12 секунд:
хм... в sqldb нифига он не возвращает, ошибся я.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Получение результата выполнения SQLQuery.ExecSQL

Сообщение Vadim » 15.11.2011 03:05:50

А как на счёт использования RowsAffected?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Получение результата выполнения SQLQuery.ExecSQL

Сообщение donpadlo » 15.11.2011 09:52:36

Да, то что нада, спасиба.
Аватара пользователя
donpadlo
новенький
 
Сообщения: 58
Зарегистрирован: 18.08.2011 09:14:53

Re: [решено] Получение результата выполнения SQLQuery.ExecSQ

Сообщение Brainenjii » 15.11.2011 10:07:01

в стандарте SQL от 2008 появился оператор MERGE, которым можно решать и такие задачи...
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: [решено] Получение результата выполнения SQLQuery.ExecSQ

Сообщение AlexVinS » 15.11.2011 10:11:42

Есть решение поизящнее, но оно не универсальное. Например для Firebird 2.5+ можно сделать примерно так:
Код: Выделить всё
UPDATE OR INSERT INTO config (ID,VAL,NAME) VALUES (null,:param,:nameparam) MATCHING (NAME);
Аватара пользователя
AlexVinS
новенький
 
Сообщения: 95
Зарегистрирован: 27.01.2009 01:18:01


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru