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

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

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

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

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

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

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

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

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

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

А насчет "DOA не ругается, но и ничего не выполняет в базе" - а Вы commit делаете?
...
Рейтинг: 0 / 0
16.05.2003, 13:07
    #32161701
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в Oracle через OraQuery
Так про 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
16.05.2003, 13:18
    #32161729
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в Oracle через OraQuery
Когда Вы вызываете метод Open, рекордсет переводится в режим редактирования данных: считываются поля, check`и и прочие атрибуты.

А скрипт "insert into ..." - выполняется совершенно по-другому - на сервере.
...
Рейтинг: 0 / 0
16.05.2003, 13:43
    #32161754
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в Oracle через OraQuery
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
16.05.2003, 13:49
    #32161762
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в Oracle через OraQuery
Не путайте метод Insert с SQL-скриптом. Это ж совершенно разные вещи!
...
Рейтинг: 0 / 0
16.05.2003, 14:23
    #32161808
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в Oracle через OraQuery
Так в ODAC - методу Insert соответствует скрипт.
...
Рейтинг: 0 / 0
16.05.2003, 14:25
    #32161814
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert в Oracle через OraQuery
Нет!!!

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

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

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

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

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


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