Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

insert в Oracle [D7, XP]


prodex ©   (2011-07-23 03:21:00) 

Есть таблица в oracle.
ABS_NUM_PAR  NUMBER 10
TIME_STAMP    DATE
TIME_WRITE     DATE
VALUE             FLOAT8

Использую компоненту OraScript ODAC CoreLab.
пытался выполнить:
INSERT INTO Last (ABS_NUM_PAR,TIME_stamp,TIME_write,Value) VALUES (1929,'06.08.2006 14:27:28','23.07.2011 5:24:32',803);
INSERT INTO Last (ABS_NUM_PAR,TIME_stamp,TIME_write,Value) VALUES (1905,'06.08.2006 14:27:18','23.07.2011 5:24:32',815);
INSERT INTO Last (ABS_NUM_PAR,TIME_stamp,TIME_write,Value) VALUES (1904,'06.08.2006 14:27:18','23.07.2011 5:24:32',775);
Ругался на некий символ. Выяснил, что ; нельзя. Можно чем-нибудь заменить?
потом пробовал одной строкой:
INSERT INTO Last (ABS_NUM_PAR,TIME_stamp,TIME_write,Value) VALUES (1929,'06.08.2006 14:27:28','23.07.2011 5:24:32',803)

пишет что не верный месяц.
Кто-нибудь, что-нибудь подскажет?


MsGuns   (2011-07-26 16:36:00) [1]

>Игорь Шевченко ©   (26.07.11 14:00) [9]
>Не знающим оракла просьба молчать и слушать!

Слушаюсь, тов. прапорщик !


Игорь Шевченко   (2011-07-26 16:06:00) [2]

DiamondShark ©   (26.07.11 15:25) [10]


> On that day, all your date-related code will break


Угу, will break. Туда ему и дорога, тащемта


DiamondShark   (2011-07-26 15:25:00) [3]

Implicit conversion is risky, and it isn't recommended. Following is an example of implicit conversion from a character string to a DATE variable:

DECLARE
  birthdate DATE;
BEGIN
  birthdate := '15-Nov-1961';
END;
Such a conversion relies on the NLS_DATE_FORMAT setting, and will work fine until the day the DBA decides to change that setting. On that day, all your date-related code will break. Changing NLS_DATE_FORMAT at the session level can also break such code.
Rather than rely on implicit conversions and the NLS_DATE_FORMAT setting, it's far safer to convert dates explicitly via one of the built-in conversion functions. The functions not only make it clear in your code that a type conversion is occurring, they allow you to specify the exact datetime format being used.


Игорь Шевченко   (2011-07-26 14:00:00) [4]

MsGuns ©   (26.07.11 11:20) [8]

Не знающим оракла просьба молчать и слушать!


MsGuns   (2011-07-26 11:20:00) [5]

>Игорь Шевченко ©   (25.07.11 12:42) [7]
>Для текущего сеанса строковое представление даты будет интерпретироваться согласно указанному формату, вроде не вредный, если даты преимущественно в одном формате.

Вероятно, Шарк имел в виду опасность такой технологии в том, что нет гарантии в том, что прогер, писавший контекстную бизнес-логику (триггеры например) не пользовался этой же методой и в результате - кака вонюча :)


Игорь Шевченко   (2011-07-25 12:42:00) [6]


> А не вредный ли это совет?


Для текущего сеанса строковое представление даты будет интерпретироваться согласно указанному формату, вроде не вредный, если даты преимущественно в одном формате.


DiamondShark   (2011-07-25 12:24:00) [7]


> 1. ALTER SESSION SET NLS_DATE_FORMAT=

А не вредный ли это совет?


Игорь Шевченко   (2011-07-25 11:24:00) [8]

0. Использовать параметры
1. ALTER SESSION SET NLS_DATE_FORMAT=
2. Записывать дату в ANSI-формате
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements003.htm#BABGIGCJ


DiamondShark   (2011-07-25 11:12:00) [9]


> пишет что не верный месяц.

to_date() с явным указанием формата спасёт ОРД.

А чем не устраивают запросы с параметрами?
Запросы все однотипные, самое то для параметризованого запроса. Зачем вам возюкаться с ручным форматированием данных?


prodex   (2011-07-23 16:28:00) [10]

С датой разобрался. Одну строку удается скормить.

> а поддерживает ли oracle пакеты команд

т.е. возможно что только по одной команде?
Или можно выполнить по одной строке, а после выполнить commit?


Loginov Dmitry   (2011-07-23 11:47:00) [11]


> Кто-нибудь, что-нибудь подскажет?


А ничего, что поле объявлено как "DATE", а в него пытаешься занести сразу и дату и время? Это допустимо для оракла?


sniknik   (2011-07-23 09:49:00) [12]

> Можно чем-нибудь заменить?
это вторично, и символ не виноват... сначала выясни, а поддерживает ли oracle пакеты команд. и та наверняка будет и чем команды разделять...

> Кто-нибудь, что-нибудь подскажет?
кто-нибудь наверняка, параметры например.


Наверх

Титульная страница Поиск, карта сайта Написать письмо