Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

Насколько целесообразно использовать такое?   Найти похожие ветки 

 
zorik ©   (2008-07-02 10:41) [0]

Если програмно нужно заносить в БД некоторые значения (импорт), то:
- использовать ХП для добавления одной записи и возвращения ID (ID используется для вставки значений в подчиненную таблицу);
- использовать ХП для возвращения требуемой записи (поиск ключа по названию, например).

Раньше я создавал датамодуль, на него TIBQueru, TIBUpdate и т.д. А сейчас написал одну процедурой исполнения функции с параметрами: имя функции и масив параметров и она все это заменяет.
Что-то мне подсказывает, что все так уже давно делали :))


 
Ega23 ©   (2008-07-02 10:46) [1]


> - использовать ХП для добавления одной записи и возвращения
> ID (ID используется для вставки значений в подчиненную таблицу);
>
> - использовать ХП для возвращения требуемой записи (поиск
> ключа по названию, например).


Я именно так и делаю.


 
Sergey13 ©   (2008-07-02 10:52) [2]

> [0] zorik ©   (02.07.08 10:41)
> Насколько целесообразно использовать такое?

По сравнению с чем? Говорить о целесообразности чего либо можно только зная задачу, которую нужно выполнить.

> на него TIBQueru, TIBUpdate
Почему не IBDataSet?


 
zorik ©   (2008-07-02 11:15) [3]


> По сравнению с чем?

По сравнению со связкой TIBQuery, TIBUpdate


> Почему не IBDataSet?

Даже не знаю, по-привычке, наверное


 
Sergey13 ©   (2008-07-02 11:23) [4]

> [3] zorik ©   (02.07.08 11:15)
> По сравнению со связкой TIBQuery, TIBUpdate

По большому счету запрос это самый эфективный способ общения с БД. Все навесы типа ХП или обработки на клиенте уменьшают производительность и/или надежность, давая при этом разумеется большую гибкость.
ИМХО.


 
Игорь Шевченко ©   (2008-07-02 11:25) [5]


> - использовать ХП для возвращения требуемой записи (поиск
> ключа по названию, например).


а что, обычный SELECT уже не в моде ?


> - использовать ХП для добавления одной записи и возвращения
> ID (ID используется для вставки значений в подчиненную таблицу);
>


Я бы вносил сразу запись и подчиненные. Но не знаю, как это в FB делается.


 
Desdechado ©   (2008-07-02 11:28) [6]

Если запись одна, то городить ради ее вставки ХП смысла не вижу.
А уж для простой выборки - тем более.


 
Loginov Dmitry ©   (2008-07-02 12:40) [7]


> - использовать ХП для добавления одной записи и возвращения
> ID (ID используется для вставки значений в подчиненную таблицу);
>


зачем здесь ХП? Генерируешь ID, запоминаешь значение, затем делаешь вставку в главную таблицу, затем вставку в подчиненную таблицу.


> использовать ХП для возвращения требуемой записи (поиск
> ключа по названию, например).


есть такая вещь...
SELECT-запрос называется.
кто в курсе - не плодит ненужных ХП.


 
zorik ©   (2008-07-02 12:58) [8]

как на меня с ХП удобнее работать именно в рантайм. универсальнее что-ли. Ниже полный код:

Универсальный вызов ХП
procedure RunStoredProc(AIBDatabase: TIBDatabase; ATransaction: TIBTransaction;
 AName: String; var AParams: Variant);
var
 AStoredProc: TIBStoredProc;
 i: Integer;
begin
 AStoredProc := TIBStoredProc.Create(nil);
 try
   AStoredProc.Database := AIBDatabase;
   AStoredProc.Transaction := ATransaction;
   AStoredProc.StoredProcName := AName;
   ATransaction.StartTransaction;
   AStoredProc.Prepare;
   for i := 0 to AStoredProc.Params.Count - 1 do
     AStoredProc.Params[i].Value := AParams[i];
   try
     AStoredProc.ExecProc;
     ATransaction.Commit;
     for i := 0 to AStoredProc.Params.Count - 1 do
       AParams[i] := AStoredProc.Params[i].Value;
   except
     on E: Exception do
     begin
       ATransaction.Rollback;
       raise Exception.Create("Error: " + E.Message);
     end;
   end;
 finally
   AStoredProc.Free;
 end;
end;


Вызов процедуры
procedure TRZBWellItem.GetID;
var
 c: Variant;
begin
 try
   c := VarArrayOf([FID, FRZBImport.FID_Field, FName]);
   RunStoredProc(FRZBImport.FDataBase, FRZBImport.FTransaction,
     "PR_GET_WELLID", c);
   FID := c[0];
 except
   on E: Exception do
   begin
     FID := -1;
     raise ERZBImport.Create(".....");
   end;
 end;
end;


 
zorik ©   (2008-07-02 13:01) [9]

В Query текст запроса надо в программе держать, а здесь в БД


 
Игорь Шевченко ©   (2008-07-02 13:41) [10]


> В Query текст запроса надо в программе держать, а здесь
> в БД


И в чем разница ?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
15-1213951444
brrr
2008-06-20 12:44
2008.08.03
Комп перегружается при нагрузке


2-1214983297
Олег-5
2008-07-02 11:21
2008.08.03
TListBox + пустое есто


15-1213786698
Nucer
2008-06-18 14:58
2008.08.03
Лог вызовов API функций


2-1215184831
VitaFrost
2008-07-04 19:20
2008.08.03
Определение активного DataSet


15-1213518786
Галинка
2008-06-15 12:33
2008.08.03
Canon Pixma iP2500





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский