Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизВвод данных в таблицу (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c