Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

Ввод данных в таблицу (Insert и Commit).   Найти похожие ветки 

 
vigo   (2005-07-18 11:48) [0]

Добрый день. Вопрос по Insert"y в таблицу. Подгружаю данные из файла, подготавдиваю и пишу в таблицу. После 10-ого Insert"a (на 11-м)пишет ошибку: "ORA-24337: идентификатор команды не подготовлен".
if not OpenDlg.Execute then Exit else
 begin
  if SQLConnection.Connected <> True then
   try
    SQLConnection.Connected := True;
    SQLConnection.Open;
    except
     on E: Exception do ShowMessage(E.Message);
   end;
  Assignfile(f, OpenDlg.FileName);
  Reset(f);
  while not eof(f) do
   begin
    readln(f, s);
    // некоторые манипуляции с данными строки
    SQLDataSet.CommandText := ("insert into invo.komunal values ("+res+")"); //res - это подготовленные данные строки
    SQLDataSet.ExecSQL;
   end;
  CloseFile(f);
 end;
end;

И ещё один вопрос как коммитить (есть подозрение что проблемма связано именно с этим)?


 
Johnmen ©   (2005-07-18 11:57) [1]

Забавно..
SQLConnection.Connected <> True
и
SQLConnection.Connected := True;
SQLConnection.Open;

и
если коннекта нет, всё равно инсертим

А так - всё дело в том самом файле, в его содержимом.


 
evvcom ©   (2005-07-18 11:58) [2]


> SQLDataSet.CommandText := ("insert into invo.komunal values
> ("+res+")");

Вот таких программистов потом администраторы Oracle называют "уродами", потому что постоянно приходиться чистить из-за них Shared Pool сервера.


 
Reindeer Moss Eater ©   (2005-07-18 11:59) [3]

readln(f, s);

ShowMessage(Res);

SQLDataSet.CommandText := ("insert into invo.komunal values ("+res+")"); //res - это подготовленные данные строки


 
Val ©   (2005-07-18 12:01) [4]

ORA-24337 statement handle not prepared

Cause: A statement cannot be executed before making preparing a request.

Action: Prepare a statement before attempting to execute it.


Что содержит res в этом случае?
Перейдите на параметры, кстати.


 
isasa ©   (2005-07-18 12:08) [5]

А кто проверит res на наличие в ней одинарной кавычки (") ?


 
vigo   (2005-07-18 12:12) [6]


> evvcom ©   (18.07.05 11:58) [2]

Объясни как insert"ить правильно, если не секрет?


 
vigo   (2005-07-18 12:13) [7]


> isasa ©   (18.07.05 12:08) [5]

ага, в этом и была проблемма.


 
evvcom ©   (2005-07-18 12:15) [8]

insert into invo.komunal values (:var1, :var2, :var3)


 
evvcom ©   (2005-07-18 12:23) [9]

+ к [8]:
запрос таким образом создается один раз, подготавливается (prepare явно или неявно) и далее данные передаются через параметры.
Плюсы:
1. Не тратится время на каждом шаге цикла на формирование, подготовку (разбор, компиляция) запроса.
2. В Shared Pool окажется только один такой запрос, и он уже (после prepare) будет в оперативной памяти сервера.
3. В случае работы с датой/временем, а также числами с плавающей запятой избегаем проблем с региональными настройками.
Минусы: что-то я их не вижу.


 
vigo   (2005-07-18 12:26) [10]

в смысле в виде параметров? то есть res(все данные), грубо говоря, "разбивать" на несколько параметров?


 
vigo   (2005-07-18 12:27) [11]

спасибо...


 
isasa ©   (2005-07-18 13:39) [12]

Зачем на несколько
insert into invo.komunal values (:res)
где res - строковый параметр

но все равно надо делать, хотя-бы,
....
AnsiReplaceStr(res, """", """""");

По поводу использования параметров, не факт, в данном случае
....SQL.Text:="insert into invo.komunal values ("+AnsiReplaceStr(res, """", """""")+")";
ИМХО, локоничнее


 
evvcom ©   (2005-07-18 13:41) [13]


> Зачем на несколько
> insert into invo.komunal values (:res)
> где res - строковый параметр

И что? Разве требуется всю эту белиберду засунуть в одно строковое поле?
На каждое поле свой параметр!


 
Val ©   (2005-07-18 13:54) [14]

>"локоничнее" - нафиг. нормально надо делать.


 
s_s   (2005-07-18 14:17) [15]

D6,QR3.0

Здравствуйте. Возникла проблема: с помощью SQL-запроса составляю отчет с группированием по полю. Все выходит нормально, но Group Footer сумму считает неправильно. например:
2
5
сумма:7
4
5
6
сумма:24
......
Не зна даже что и делать!!!!!!??????


 
S_s   (2005-07-18 14:20) [16]

D6,QR3.0

Здравствуйте. Возникла проблема: с помощью SQL-запроса составляю отчет с группированием по полю. Все выходит нормально, но Group Footer сумму считает неправильно. например:
2
5
сумма:7
4
5
6
сумма:24
......
Не зна даже что и делать!!!!!!??????


 
evvcom ©   (2005-07-18 15:08) [17]


> Не зна даже что и делать!!!!!!??????

Вопрос в своей ветке задать.



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

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.043 c
1-1123600501
_Андрей
2005-08-09 19:15
2005.08.28
Создание формы в потоке, функция которого находится в DLL


14-1123089550
DillerXX
2005-08-03 21:19
2005.08.28
Что вы знаете про...


14-1122927294
ronyn
2005-08-02 00:14
2005.08.28
Переустановка в Install Shield


3-1121700666
ali_tash
2005-07-18 19:31
2005.08.28
Как задекларировать BASED ON переменную


3-1121672917
vigo
2005-07-18 11:48
2005.08.28
Ввод данных в таблицу (Insert и Commit).