Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать commit в ХП? / 6 сообщений из 6, страница 1 из 1
27.03.2016, 20:32
    #39201544
offsites
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать commit в ХП?
Добрый вечер, форумчане. Помогите разобраться.
Это мессенджер с 2-мя параметрами входящими: отправитель :precep_id, и получатель :pmy_id.

Есть такой вот код:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
begin
  FOR SELECT ... бла бла ...
    FROM ... бла бла ...
    WHERE ... бла бла ...
    ORDER BY ... бла бла ...
    INTO :msg                            // Тут вернули сообщение от отправителя получателю
  DO
    BEGIN
      execute procedure upd_message_readed(:pmy_id, :precep_id);  // Здесь ОЧЕНЬ ХОЧЕТСЯ отметить что сообщение было прочитано.
      SUSPEND;
    END
end.



Проблема в том что через IBExpert при вызове процедуры все отрабатывает как надо, если нажать COMMIT, но через Delphi+Fib не понимаю как сделать Commit, если использую не StoredProc, а DataSet.

Предполагаю, т.к. вызов ХП происходит из ХП, можно как-то коммитить и без Delphi?
...
Рейтинг: 0 / 0
27.03.2016, 20:35
    #39201546
offsites
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать commit в ХП?
Чуть не забыл показать код процедуры UPD_MESSAGE_READED, вот он:

Код: plsql
1.
2.
  UPDATE chat SET Msg_state=1
  WHERE Msg_to=:puser_id AND Msg_from=:precep_id;
...
Рейтинг: 0 / 0
27.03.2016, 21:09
    #39201564
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать commit в ХП?
offsitesчерез Delphi+Fib не понимаю как сделать Commi
Открой справку на TpFIBTransaction.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.03.2016, 21:10
    #39201566
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать commit в ХП?
offsitesПроблема в том что через IBExpert при вызове процедуры все отрабатывает как надо, если нажать COMMIT, но через Delphi+Fib не понимаю как сделать Commit, если использую не StoredProc, а DataSet.

точно так же Transaction.Commit();

Хотя идея дурацкая. Откуда уверенность в том, что если запись отфетчена, то она обязательно прочитана?
...
Рейтинг: 0 / 0
27.03.2016, 23:15
    #39201606
offsites
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать commit в ХП?
Симонов Денис,

может идея дурацкая по реализации, но вот по смыслу... а какие могут быть гарантии что она прочитана? :) По умолчанию - была открыта, значит прочитана. В случае exception уже не важно прочитана или нет, в истории она все равно будет.
...
Рейтинг: 0 / 0
28.03.2016, 10:46
    #39201845
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать commit в ХП?
offsitesможно как-то коммитить и без Delphi?
можно, но только в автономной транзакции. см. документацию на SQL Firebird:
http://www.ibase.ru/files/firebird/langref25rus/index.html#langref25-psql-operators-execstmt
with autonomous transaction.
Но это "продвинутое использование", других вариантов нет, обычный коммит с клиента из компонент.
Работать с FIBPlus и спрашивать про транзакции, когда есть весьма полная статья
http://www.devrace.com/ru/fibplus/articles/2165.php
это, извините, ни в какие ворота.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать commit в ХП? / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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