Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.068 c
8-1081016008
Forelli
2004-04-03 22:13
2004.06.13
Как вызвать Windows кую настройку громкости


3-1085392201
Known Unknown
2004-05-24 13:50
2004.06.13
Исключения в UDF


14-1085520043
CS_XatRiX
2004-05-26 01:20
2004.06.13
DElphi na4alnaja stadija!!!!!!!


1-1085527997
kaif
2004-05-26 03:33
2004.06.13
Decimal Separator


1-1086071689
new
2004-06-01 10:34
2004.06.13
Чтение файла