Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизTpFIBQuery+TThread Найти похожие ветки
← →
starik30 (2004-05-20 12:34) [0]Вроде бы простой код выполняется в потоке: (SQL_Statement - процедура для вставки в таблицу вида select * from proc_name (...) и формируется она динамически в потоке)
if SQL_Statement<>"" then
begin
fmMonotor1.trFromSAA.StartTransaction;
try
fmMonotor1.qrFromSAA.Close;
fmMonotor1.qrFromSAA.SQL.Clear;
fmMonotor1.qrFromSAA.SQL.Add(SQL_Statement);
fmMonotor1.qrFromSAA.ExecQuery;
fmMonotor1.trFromSAA.Commit;
except
Ошибка :
Can"t Prepare, because query is empty
Пару записей вставляет потом затыкается и все...
Заранее благодарен
Юра
← →
Johnmen © (2004-05-20 14:01) [1]Что-то не то здесь написано...
Чей метод StartTransaction ? Разве TpFIBQuery ???
Что требуется в качестве аргумента методу Add ? По-моему, строка. Но SQL_Statement - процедура... - бред ?
Если select * from , то причем здесьExecQuery;
?
Если вставки в таблицу , то причем здесь select * from ???
...
← →
Курдль © (2004-05-20 14:11) [2]...и еще, - научите меня быть умным!
Зачем выполнять обращения к СУБД в потоке?
← →
Vlad © (2004-05-20 14:20) [3]
> Курдль © (20.05.04 14:11) [2]
> Зачем выполнять обращения к СУБД в потоке?
Причин много, например нужно чтобы основное приложение работало, а не висело, в то время как в фоне будет работать достаточно долгий запрос.
Другой пример - нужна очень быстрая загрузка данных из какого-либо источника на сервер. Несколько потоков будут делать это намного быстрее чем один
← →
starik30 (2004-05-20 15:02) [4]> Johnmen
...trFromSAA : TpFIBTransaction;
qrFromSAA: TpFIBQuery;
SQL_string : string;
...
Я хотел сказать что значение SQL_string равно select * from proc_name (...) т.е. происходит вызов хранимой процедуры, которая выполняет вставку в таблицу ...
> Курдль программа мониторит директорий находит файлы записывает их в потоке в базу и еще хочется чтобы эта же программа в другом потоке через определенные промежутки времени делала запрос к базе и обратно готовила другие файлы в другой директорий ...
но из-за чего возникает ошибка?..
← →
starik30 (2004-05-20 15:09) [5]Извините за беспокойство - проблема решена - в строке встречался знак вопроса, который TpFIBQuery ... короче отключил ParamCheck и все завертелось ... Как говориться клинишь - сходи покушай рыбу -))
← →
Digitman © (2004-05-20 15:13) [6]
> процедура для вставки в таблицу вида select * from proc_name
> (...)
это как ?
какая такая "вставка" ?
select-предложение никаких "вставок" не делает, оно предназначено для выборки !
← →
starik30 (2004-05-20 15:18) [7]> Digitman
Есть хранимая процедура на сервере, которая выполняет вставку в таблицу + некоторый контроль и возвращает id вставленной записи ... вызов этой процедуры происходит так :
select * from proc_name (...)
← →
Курдль © (2004-05-20 15:21) [8]
> вызов этой процедуры происходит так :
> select * from proc_name (...)
Чего только не насмотришься на этом сайте :)
← →
Digitman © (2004-05-20 15:29) [9]
> Курдль © (20.05.04 15:21) [8]
эт точно ! (с) Сухов
← →
starik30 (2004-05-20 16:16) [10]> Курдль
А можно узнать в чем ошибка ?..
← →
Vlad © (2004-05-20 16:19) [11]
> starik30 (20.05.04 16:16) [10]
Да не в чем, шутят они. Все нормально.
← →
Курдль © (2004-05-20 16:26) [12]
> А можно узнать в чем ошибка ?..
Да все более-менее. При Вашем "стиле вызова" это скорее будет не процедура, а функция. Если она не призвана возвращать НД, лучше так не делать. К тому же не все СУБД поддерживают такой синтаксис.
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.025 c