Главная страница
    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.004 c
2-1181042958
sergeyst
2007-06-05 15:29
2007.07.01
Загрузка рисунка не сразу


15-1179163591
Rouse_
2007-05-14 21:26
2007.07.01
ММР в Питере


1-1178106337
DelphiLexx
2007-05-02 15:45
2007.07.01
Передать процедуру класса в Обычную функцию


2-1181198499
Solbon
2007-06-07 10:41
2007.07.01
Системный журнал


2-1181052191
rumpelshtilchen
2007-06-05 18:03
2007.07.01
Вопрос





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