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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.03 c
8-1081136189
Rentgen
2004-04-05 07:36
2004.06.13
Photoshop Color Table


1-1085909777
ork
2004-05-30 13:36
2004.06.13
ListBox, прокрутка.


8-1080060325
__yur__
2004-03-23 19:45
2004.06.13
Как узнать что рисунок имеет белый фон


6-1082528540
vadvad
2004-04-21 10:22
2004.06.13
Почтовый сервер


3-1085122443
paul_k
2004-05-21 10:54
2004.06.13
Как проверить установлен ли MDAC?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский