Форум: "Начинающим";
Текущий архив: 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