Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Stored Proc [D7, IB6.x]


Страницы:   1 2 3

Виктор ©   (2004-04-14 15:58:00) 

Подскажите пожалуста :
имеется база, в ней создана StoredProcedure изменяющая таблицы по входящим параметрам;
её выполняю праграммно посредством IBStoredProc;
для неё нужен commit или она должна это делать на автомате?


Johnmen   (2004-04-15 12:00:00) [1]

>Dimk

Уважаемый, всё-таки не стоит дискутировать, если не владеете предметом дискуссии. О чём вы любезно и сообщили в [34].


Курдль   (2004-04-15 11:59:00) [2]


> и чего плохого в конструкции
> Query.SQL.Text := 'begin commit; end;';
> Query.ExecSQL;

Это нонсенс!


Dimk   (2004-04-15 11:49:00) [3]

Ну если в интербейсе блок не ограничивается
begin end - так свои должны быть конструкции для
создания анонимного блока. А если нет анонимных блоков
так сделать процедуру в которой один коммит и есть
и вызвать ее как еще одну хранимую процедуру для коммита
в конце всех изменений.


Dimk   (2004-04-15 11:42:00) [4]

Интербейс (если я не ошибаюсь) поддерживает SQL92
а это значит что commit там есть.
и чего плохого в конструкции
Query.SQL.Text := 'begin commit; end;';
Query.ExecSQL;


Курдль   (2004-04-15 11:12:00) [5]


> Это по-моему из Оракла ;-)

Оракл чё, дурнее интербэйса? :)
Он тоже все коммиты/роллбэки решает на самом низшем уровне.


Vlad   (2004-04-15 11:10:00) [6]


> Dimk   (15.04.04 10:41) [37]

Это по-моему из Оракла ;-)


Johnmen   (2004-04-15 11:08:00) [7]

>Dimk

Уважаемый, не надо дискутировать, если не владеете предметом дискуссии.


Dimk   (2004-04-15 10:41:00) [8]

2 Курдль ©   (14.04.04 22:49) [36]
Ну тогда Ваше ApplayUpdates...
или если комуто не верится что лампочка в холодильнике
гаснет когда закрывается дверь -
сделать чтото типа Query.SQL.Text :=
begin
commit;
end (не помню надо ли тут запятую ставить в данном случае)
и Query.ExecSQL;
:o)


Курдль   (2004-04-14 22:49:00) [9]


> Dimk   (14.04.04 19:50) [34]
> Но я бы сделал коммит в процедуре.

Что, прямо в теле процедуры на сервере?
И что делать, если все-таки понадобится открыть длинную транзакцию для цепочки процедур(инсёртов, апдэйтов ...), в которой эта процедура окажется предпоследней, а последняя вывалит ошибку?


Fay   (2004-04-14 19:55:00) [10]

Если бы была такая возможность...


Dimk   (2004-04-14 19:50:00) [11]

Sorry. Честно признаюсь - не писал под Interbase :o)
Но я бы сделал коммит в процедуре.


Vlad   (2004-04-14 19:47:00) [12]


> Dimk   (14.04.04 19:45) [32]

Если ты внимательно читал, тут речь о компонентах IBX, то есть БДЕ тут как бы вобще не причем.


Dimk   (2004-04-14 19:45:00) [13]

Почему же ODBC? Сходите в BDEAdministrator...
Drivers->Native->Interbase
Или тут используются компонеты которые работают без BDE?


Vlad   (2004-04-14 19:42:00) [14]


> Курдль ©   (14.04.04 19:31) [30]


> Например при кэшированных изменениях в 3-х связанных ДатаСэтах
> достаточно сделать DataBase.ApplyUpdate([DataSet1, DataSet2,
> DataSet3]); чтобы все само собой разрулилось.

Как выяснилось, оно разрулится и без кэшированных изменений.
Но это сомнительный подход...


Курдль   (2004-04-14 19:31:00) [15]

Я тут вспылил немного, смешав в кучу столько всякого - и кэшированныеп изменения и транзакции.
Я хотел сказать одно(точнее повторить), что нет нужды открывать, закрывать, откатывать транзакции при простых операциях.
Например при кэшированных изменениях в 3-х связанных ДатаСэтах достаточно сделать DataBase.ApplyUpdate([DataSet1, DataSet2, DataSet3]); чтобы все само собой разрулилось.
А при исполнении одиночнойпроцедуры при помощи ...ExecProc или ...Query вообще достаточно просто вызвать их метод ExecSQL.


Vlad   (2004-04-14 19:29:00) [16]


> Dimk   (14.04.04 19:26) [28]

Это для ODBC драйвера чтоли? Так о нем тут речи нет.


Dimk   (2004-04-14 19:26:00) [17]

А вот что я нашел в настройках драйвера Interbase.
SHARED AUTOCOMMIT Passthrough SQL and non-passthrough SQL share the same connection, and passthrough SQL behaves in a similar fashion to non-passthrough. This means that, as long as the user is not in an explicit client transaction or batch mode, passthrough SQL statements are automatically committed.


Vlad   (2004-04-14 18:41:00) [18]


> Соловьев ©   (14.04.04 18:32) [26]

По-моему автору эти кэшированные изменения вобще до лампочки :-)
Ему надо знать - нужен явный коммит или не нужен


Соловьев   (2004-04-14 18:32:00) [19]


> Johnmen ©   (14.04.04 18:30) [25]

Да. Тут автор поста не до конца понял зачем эти кешированные изменения придумали... Я согласен с вами :)


Johnmen   (2004-04-14 18:30:00) [20]

>Соловьев ©   (14.04.04 18:22) [22]

Про это не спорю. У самого есть на IBX долгоживущие, в смысле играющие, проекты.
Суть то вот в этом  [21] и [23]
:)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо