powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Insert в Oracle через OraQuery
19 сообщений из 19, страница 1 из 1
Insert в Oracle через OraQuery
    #32160997
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help!!!!
В чем дело пытаюсь Insert-ить
через SQLInsert
и даже такое выражение (все навороты и параметры убраны и оставлены
одни константы)
insert into pass.pass_permit
values(
33,
1,
null,
null,
null,
sysdate,
sysdate,
)

ошибка Delphi "... EDatadaseError Поле _первое_ должно иметь значение ..."

Раньше в других OraQuery получалось. :-(
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161100
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thanks!
Дошло.
SQL-выражение под SQLInsert посылается поэтапно и
когда поле not null, то Delphi требует задания значения в
программе, а не в SQL-выражении.
P.S. Возврат к Delphi от других языков требует неких повторных
"стучаний рогами о стену".
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161312
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Да нет, не дошло

Ошибка происходит именно на СУБД (EDatadaseError).
Неправильно написан инсерт.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161382
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает железно.
Когда ошибка лезет из СУБД, то в сообщении префиксы субд-ешные: ORA, PLS и прочие.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161403
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Не надо морочить голову!

Вот именно такое SQL-выражение:

insert into pass.pass_permit
values(
33,
1,
null,
null,
null,
sysdate,
sysdate,
)

НИКОГДА Делфи проверять не будет!!!

Так что либо приводите полностью (не убирая якобы лишнее), либо не спорьте.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161413
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле, где '33' - not null.
И проверяет - not null ли.
И если в программе просто ...Insert и далее без конкретного
придания значения этому полю ...Post, то ошибка.
Почему спор? В форум отнечегоделать не пишу.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161459
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
В скрипте, который Вы привели, Делфи ничего проверять не будет.
Скрипт просто передается в прекомпилер и там проверяется. Но это уже Оракл, а не Делфи.
Делфи отродясь ничего не знает о полях и таблицах Вашей базы.

Или, Вы думаете, что, если в DOA можно выполнять PL/SQL-скрипты, то все проверяется на уровне DOA???
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161488
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще?
Зачем мне обманывать, причем по такому уже ставшему простым вопросу.
Но используется ODAC, а не DOA. Может быть в этом заминка. Вообще
интерсно - щас DOA поставлю и попробую...
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161575
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DOA не ругается, но и ничего не выполняет в базе.
То есть вероятно тоже требуется доопредение и еще Бог весть что (не досуг копать, sorry).
Вообще ODAC по-круче будет (вот уже полтора месяца юзаю), хотя говорили, что DOA "ниже" (то есть ближе к hardware).
Просто сейчас все переписывается с BDE. И новое пишется без BDE.
Но вероятно, когда JDeveloper созреет, то как инструмент к Oracle всех затмит.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161584
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
DOA или ODAC - без разницы.
Вы выполняете обычный скрипт.

Другое дело, если Вы, в целях "упрощения" поста в форум, закинули сюда сокращенный скрипт, а на самом деле у Вас объявлены not null переменные.

А насчет "DOA не ругается, но и ничего не выполняет в базе" - а Вы commit делаете?
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161701
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так про NOT NULL и говорил же!!!
И во втором сообщении извинился.
В DOA ...Session.commit делал, но из-за другого не сраб.
Да, вставляет.
Но в такой же ситуации ODAC ругался???

DOA
OracleQuery1.Execute;
OracleSession1.Commit;

ODAC
OraQuery1.Open;
OraQuery1.Insert;
OraQuery1.Post;
ругается

OraQuery1.Open;
OraQuery1.Insert;
OraQuery1.FieldByName('имя того not null поля').AsInteger:=-999;
OraQuery1.Post;
не ругается

причем BDE также ругается
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161729
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Когда Вы вызываете метод Open, рекордсет переводится в режим редактирования данных: считываются поля, check`и и прочие атрибуты.

А скрипт "insert into ..." - выполняется совершенно по-другому - на сервере.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161754
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Call Open to set the Active property for the dataset to True.

Позволяет Insert.

When Active is True, data can be read from and written to the database.

Собственно редактирование.

>А скрипт "insert into ..." - выполняется совершенно
>по-другому - на сервере.

И что ODAC и BDE не пускают? А DOA, так как сделан "ниже" пропускает.
Так вероятно.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161762
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Не путайте метод Insert с SQL-скриптом. Это ж совершенно разные вещи!
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161808
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в ODAC - методу Insert соответствует скрипт.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161814
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Нет!!!

Метод - это метод объекта, а скрипт - это скрипт.

Почитайте документацию по Делфи, по Ораклу и по ODAC.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32161853
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в ODAC - методу Insert соответствует скрипт.
То есть при вызове метода Insert срабатывает скрипт, задаваемый в
свойстве SQLInsert.
Это вроде и есть лицо объектно-ориентированного программирования. Полиморфизм, где скрипт - объект, который разные
модули воспринимают по-своему.

Почитайте документацию по Делфи, по Ораклу и по ODAC.
Это всегда - хороший совет.

Собственно 40% времени программирования этим и занимаюсь.
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32162843
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что прописывается в SQLInsert исполняется при заполнении DataSet, метод Insert просто добавляет строку к DataSet не фиксируя изменений в БД. Post вызывает исполнение SQL-запроса. И использовать есго надо при управлении ручным вводом.
Если требуется просто исполнить предложение insert или update без возвращения результата, то проще использовать TOraSQL (ODAC):
OraSQL1.Execute;
OraSession1.Commit ;
...
Рейтинг: 0 / 0
Insert в Oracle через OraQuery
    #32162970
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>... в SQLInsert исполняется при заполнении DataSet, метод Insert просто >добавляет строку к DataSet ...

Да признаю - ляпнул, не попробовав.
Перепутал - в каком-то Java-софте такое наблюдал.
Хотя в Delphi можно такое дописать, но зачем с другой стороны.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Insert в Oracle через OraQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]