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

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

TpFIBStoredProc vs TpFIBDataSet [FB1.0.3]


starik30 ©   (2004-07-21 16:56:00) 

Добрый день ...

Не подскажите в чем преимущества и недостатки (включая накладные расходы для сервера) использования
TpFIBDataSet вместо TpFIBStoredProc при вызове хранимой процедуры, когда процедура возвращает результат ?.. когда не возвращает результат ?

Заранее благодарен за ответ

Юра


Курдль   (2004-07-21 17:34:00) [1]


> Соловьев ©   (21.07.04 17:29) [17]
> не знаю где - возможно в MS SQL такое канает, а в ИБ нет.

А! Вот где собака порылась! :)
Я как раз и имел в виду параметры, объявленные в процедуре, как OUT или INOUT. Это для Sybase (а значит и для MS SQL) и Oracle.


Соловьев   (2004-07-21 17:29:00) [2]


> DataSet.Sql.Text := 'begin TestProc(@PARAM1); end;';


> (За синтаксис вызова процедуры на ИБ не ручаюсь).

не знаю где - возможно в MS SQL такое канает, а в ИБ нет.
Там будет это выглядеть так
DataSet.Sql.Text := 'select param_out from TestProc(:PARAM_IN)';


Курдль   (2004-07-21 17:26:00) [3]


> Соловьев ©   (21.07.04 17:23) [15]


DataSet.Sql.Text := 'begin TestProc(@PARAM1); end;';
DataSet.ExecSQL;
x := DataSet.FieldByName('PARAM1').Value;
 
Так оно и сработает???

(За синтаксис вызова процедуры на ИБ не ручаюсь).


Соловьев   (2004-07-21 17:23:00) [4]


> x := DataSet.ParamByName('PARAM1').Value;

x := DataSet.FieldByName('PARAM1').Value;


Курдль   (2004-07-21 17:20:00) [5]


> Соловьев ©   (21.07.04 17:13) [12]
> а как ты думаешь там работает insert, update, delete, refresh?


Т.е. если если в датасэте прописать вызов процедуры, меняющей параметр PARAM1, то можно будет получить значение этого параметра в переменную хпосле выполнения таким образом:

DataSet.ExecSQL;
x := DataSet.ParamByName('PARAM1').Value;


Johnmen   (2004-07-21 17:15:00) [6]

>Не подскажите : какой  максимальный размер базы данных для FB1.5 (win32) ?

http://www.ibase.ru/v6/ib6faq.htm


Соловьев   (2004-07-21 17:13:00) [7]


> Как? Разве он обучен принимать параметры?

а как ты думаешь там работает insert, update, delete, refresh?


Курдль   (2004-07-21 17:11:00) [8]


> Соловьев ©   (21.07.04 17:10) [10]
> это все реализуется нормально и в датасете.

Как? Разве он обучен принимать параметры?


Соловьев   (2004-07-21 17:10:00) [9]


> удобен при нескольких исходящих или двунаправленных параметрах
> SP.

это все реализуется нормально и в датасете.


Курдль   (2004-07-21 17:07:00) [10]


> Соловьев ©   (21.07.04 17:01) [4]
> Шоб було:)
> И пора перейти уже на FireBird 1.5


Я не пользовал IB (в таких количествах) но думаю, что T...StoredProc может быть удобен при нескольких исходящих или двунаправленных параметрах SP.


starik30   (2004-07-21 17:05:00) [11]

Не подскажите : какой  максимальный размер базы данных для FB1.5 (win32) ?


Соловьев   (2004-07-21 17:05:00) [12]


> Извините а зачем тогда TpFIBStoredProc ?

есть небольшая фича - читает из системной таблицы параметры.


Johnmen   (2004-07-21 17:04:00) [13]

>Извините а зачем тогда TpFIBStoredProc ?

Шоб выполнять безответные ХП или немногословные ХП, т.е. "однословные"...:)


Соловьев   (2004-07-21 17:02:00) [14]


> когда не возвращает результат ?

кстати, результат не всегда запись:) это надо учесть читая [1]


Соловьев   (2004-07-21 17:01:00) [15]

Шоб було:)
И пора перейти уже на FireBird 1.5


starik30   (2004-07-21 17:01:00) [16]

Извините а зачем тогда TpFIBStoredProc ?


starik30   (2004-07-21 17:00:00) [17]

Извините а зачем тогда TpFIBStoredProc ?


Соловьев   (2004-07-21 16:58:00) [18]

все что возращает записи - TpFIBDataSet
все что не возвращает - TpFIBQuery, TpFIBDatabase


Наверх

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