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

Вниз

TOracleQuery - многострочный SQL   Найти похожие ветки 

 
tytus ©   (2007-04-03 18:12) [0]

В цикле выполняется:
for i:=1 to n do begin
...
s:="Insert into .... Values(...)"; -- строка без точки с запятой
OQ1.Close;
OQ1.SQL.Clear;
OQ1.SQL.Add(s);
OQ1.Execute;
end;//for

OracleSession1.Commit;

переменная s принимает разные значения.
Вот хотелось бы вначале грузить s в StringList, а затем (после цикла) OQ1.SQL.Assign(StringList); и Execute;
НО!
Ни запятая в конце строк, ни точка с запятой - не помогает - ругается....
Как правильно записать строки в листе?


 
Правильный Вася   (2007-04-03 18:19) [1]

компонент-скриптогонялка в этой коллекции есть?


 
tytus ©   (2007-04-03 18:25) [2]

>Правильный Вася   (03.04.07 18:19) [1]
Нету.


 
Reindeer Moss Eater ©   (2007-04-03 19:41) [3]

begin
statement;
....
statement;
end;


 
Desdechado ©   (2007-04-03 21:06) [4]

Безымянный кодовый блок [3] на PLSQL


 
ANB ©   (2007-04-04 11:20) [5]


> Безымянный кодовый блок [3] на PLSQL

В безымянном блоке можно выполнять не все команды SQL, например, нельзя DDL.


> for i:=1 to n do begin
> ...
> s:="Insert into .... Values(...)"; -- строка без точки с
> запятой
> OQ1.Close;
> OQ1.SQL.Clear;
> OQ1.SQL.Add(s);
> OQ1.Execute;
> end;//for

Мой телепатор подсказывает, что в s меняется только значения в values.
Тогда намного удобнее будет по другому :

OQ1.SQL.Text := "insert into table1 (F1, F2, F3 . . .) values (:F1, :F2, :F3)";
OQ1.DeclareVariable("F1", ftString); // Пишу по памяти, т.к. DOA ша нету
OQ1.DeclareVariable("F2", ftString); // Пишу по памяти, т.к. DOA ша нету
OQ1.DeclareVariable("F3", ftString); // Пишу по памяти, т.к. DOA ша нету
OQ1.Prepare; // В старых версиях DOA могут быть проблемы
for i := 1 to n do begin
 QQ1.SetVariable("F1", "Вася");
 QQ1.SetVariable("F2", "Вася");
 QQ1.SetVariable("F3", "Вася");
 OQ1.Execute;
end;


 
ANB ©   (2007-04-04 11:21) [6]


> tytus ©   (03.04.07 18:25) [2]
> >Правильный Вася   (03.04.07 18:19) [1]
> Нету.

Есть. Но работает довольно криво и скорости не прибавит


 
Desdechado ©   (2007-04-04 11:24) [7]

> В безымянном блоке можно выполнять не все команды SQL, например,  нельзя DDL.
C чего бы это? Попробуй:
BEGIN
 EXECUTE IMMEDIATE "CREATE TABLE xxx( i INTEGER )";
END;

Да и у автора одни INSERT"ы.


 
ANB ©   (2007-04-04 12:35) [8]


> Desdechado ©   (04.04.07 11:24) [7]
> > В безымянном блоке можно выполнять не все команды SQL,
>  например,  нельзя DDL.
> C чего бы это? Попробуй:
> BEGIN
>  EXECUTE IMMEDIATE "CREATE TABLE xxx( i INTEGER )";
> END;
> Да и у автора одни INSERT"ы.

Кхм. Однако с клиента намного проще отправить просто create table и не выеживать :)
Тем более скриптогонялка есть как в DOA, так и очень легко написать самому.
А у автора - массовые инсерты. Глубоко сомневаюсь, что передача данных в одном pl/sql блоке сильно повысит скорость, а вот неудобств от неиспользования параметров (или извращенного их использования) добавит много.



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

Форум: "Базы";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
2-1181332636
Bullfrog
2007-06-08 23:57
2007.07.01
работа с текстовым файлом


2-1181204834
авыф
2007-06-07 12:27
2007.07.01
поток


1-1177341573
Nucer
2007-04-23 19:19
2007.07.01
Автопрокрутка в TRichEdit


1-1178102094
I-New
2007-05-02 14:34
2007.07.01
Номер билда


3-1176115976
MadButcher
2007-04-09 14:52
2007.07.01
"зависание" Delphi 7





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