powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение значения в таблице по умолчанию через TOAD
47 сообщений из 47, показаны все 2 страниц
Изменение значения в таблице по умолчанию через TOAD
    #39491629
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я с Oracle/MySQL на "ВЫ", так что сильно не бейте по рукам))
Данная БД работает с 2004 года, при попытке открытия записей через клиента периодически появляется ошибка "Invalid time", все решалось простым удалением записей и новым их созданием, но потом пришел я на работу и захотел разобраться))) Нашел старый TOAD 8.5.3 - к которому имелась инструкция по подключению к БД. Полазив по таблицах на нашел ту самую в которой рождалась ошибка, только в TOAD она звучит как "0.0 is not a valid timestamp". Я решил установить в проблемном месте значение по умолчанию "SYSDATE", но оно все равно не вносится, если клиент ничего не установил.

Как попробовать заставить таблицу принимать значение по умолчанию? При условии что нарушать работу БД нельзя, уволят к чертям и разбираться никто не будет))

P.S.: Клиент - exe-шник сделан в Delphi, что он собой представляет можно только догадываться, исходника нет)). Кто разработчик всего этого добра и кто внедрял в рабочий процесс - тоже не известно.

P.Р.S.: Как такой запрос:
Код: sql
1.
2.
3.
UPDATE OFFICE_ORDERS
SET WHO_DATE = SYSDATE
WHERE WHO_DATE NOT BETWEEN '01.01.1996' AND '01.01.2018';


реагирует на NULL? (Это один из вариантов решения озвученной проблемы)
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39491675
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to_date

авторДанная БД работает с 2004 года, при попытке открытия записей через клиента периодически появляется ошибка "Invalid time", все решалось простым удалением записей и новым их созданием,
ахринетъ
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492074
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenar,
Сделал вчера в таблице:
Код: sql
1.
TO_DATE(SYSDATE, 'DD/MM/YYYY')

- значением по умолчанию, но значения не вносятся. Наверное все-таки клиент записывает NULL, если пользователь ничего не ввёл. А так как автопарк состоит из Win XP (да-да, у нас таких много), 7, 8, 8.1, 10 -- х64/х86, то проблема будет появляться.
Вчера разбирался с пользователем после которого появлялась озвученная ошибка - проблема от данного пользователя возникала потому что на его системе Win 7 х32, стояла BDE x64. Заменил на BDE х32 и пользователь пока что не ломает записи.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492078
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatraus
Код: sql
1.
TO_DATE(SYSDATE, 'DD/MM/YYYY')

NLS-мина. Используй trunc.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492080
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatraus
Код: sql
1.
TO_DATE(SYSDATE, 'DD/MM/YYYY')

Жуть.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492088
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausпроблема от данного пользователя возникала потому что на его системе Win 7 х32, стояла BDE x64. Заменил на BDE х32 и пользователь пока что не ломает записи.Это не есть истинная причина проблемы, это всего лишь фактор, при котором она воспроизводится/не_воспроизводится.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492105
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слов нет.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492111
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q.Tarantinoслов нет.
рекомендую...СЛОВАРЬ
Сборник слов в алфавитном порядке, с пояснениями, толкованиями или с переводом на другой язык.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492137
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausP.Р.S.: Как такой запрос:
Код: sql
1.
2.
3.
UPDATE OFFICE_ORDERS
SET WHO_DATE = SYSDATE
WHERE WHO_DATE NOT BETWEEN '01.01.1996' AND '01.01.2018';


реагирует на NULL? (Это один из вариантов решения озвученной проблемы)

Плохо реагирует, не показывает их

Хочешь искать с null
Код: plsql
1.
2.
3.
select *
from OFFICE_ORDERS
WHERE WHO_DATE is null;



ну а дальше:
- Найди хоть 1 запись с null.
- Проверь из клиента что твоя ошибка воспроизводится для этой записи.
- Замени поле WHO_DATE не на sysdate, a хотя-бы на Date_Modify для одной этой записи.
- Проверь из клиента что твоя ошибка не воспроизводится для этой записи.
- Напиши результат
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492214
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL- Найди хоть 1 запись с null.
- Проверь из клиента что твоя ошибка воспроизводится для этой записи.
- Замени поле WHO_DATE не на sysdate, a хотя-бы на Date_Modify для одной этой записи.
- Проверь из клиента что твоя ошибка не воспроизводится для этой записи.
- Напиши результат
Наверное я ввёл сообщество в заблуждение, извините.
Если в записи NULL то всё нормально работает, но иногда, насколько я понял, вместо NULL записывается какое-то значение отличимое от NULL ("0" или еще что), хоть клиент позволяет сохранять только дату или ничего.

MaximaXXLalbatrausP.Р.S.: Как такой запрос:
Код: sql
1.
2.
3.
UPDATE OFFICE_ORDERS
SET WHO_DATE = SYSDATE
WHERE WHO_DATE NOT BETWEEN '01.01.1996' AND '01.01.2018';


реагирует на NULL? (Это один из вариантов решения озвученной проблемы)
Плохо реагирует, не показывает их
А это хорошо)), можно исправить всех "Инвалидов" (пользователи их так называют) за 2017 год, не внося изменения в работающие записи.


Сейчас наверное вопрос стоит уже по другому: может ли клиент перезаписывать значение в таблице БД выставленное по умолчанию, если у него даже не активировалось соответственное поле (никакие данные не вносились и не удалялись)?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492233
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatraus может ли клиент перезаписывать значение в таблице БД выставленное по умолчанию, если у него даже не активировалось соответственное поле (никакие данные не вносились и не удалялись )?
Всё что явно или опосредствованно не запрещено - разрешено (как это ни банально);
Что вы хотели сказать выделенным набором слов?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492271
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewer,

Пользователь в клиентском приложении хочет выставляет дату, а хочет - нет. Обычно они (пользователи) в клиенте даже не ставят курсор в поле отвечающее за значение поля "WHO_DATE" в БД (извините за тавтологию).
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492334
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausViewer,

Пользователь в клиентском приложении хочет выставляет дату, а хочет - нет. Обычно они (пользователи) в клиенте даже не ставят курсор в поле отвечающее за значение поля "WHO_DATE" в БД (извините за тавтологию).

У вас дата в дефаулте, она будет заполнена, если не пользователем. то ораклом.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
13:18:59 stat@iips>; create table t(id number, d date default sysdate);

Table created.

Elapsed: 00:00:00.03
13:19:03 stat@ii>; insert into t(id) values(1);
1 row created.
Elapsed: 00:00:00.00
13:19:19 stat@ii>; select * from t;
        ID D
---------- --------
         1 20.07.17
Elapsed: 00:00:00.01
13:22:48 stat@ii>; select * from t;
        ID D
---------- --------
         2 20.07.17
Elapsed: 00:00:00.00
13:22:53 stat@ii>; update t set d=null;
1 row updated.
Elapsed: 00:00:00.01
13:23:01 stat@ii>; update t set id=id+1;
1 row updated.
Elapsed: 00:00:00.01
13:23:11 stat@ii>; select * from t;
        ID D
---------- --------
         3
13:23:22 stat@ii>; exit


Если дата в нулл, то и при update ничего не будет. Поищите по форуму как включить трассировку сессии, вы там увидите, что и куда вставляете. Это если у вас нет возможности посмотреть исходники клиента.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39492946
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenar,

Данные из файла трассировки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
***...***
Delete From CustomsAdmin.OFFICE_ORDERS
Where DCUS_Code = 38 and
Type_Card = 1 and Num_Card = 62 and
Year_Card = 2017

***...***

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  DELETE OFFICE_ORDERS 
      1   TABLE ACCESS BY INDEX ROWID OFFICE_ORDERS 
      1    INDEX RANGE SCAN (ххххххххххх)

***...***

Insert Into CustomsAdmin.OFFICE_ORDERS
(DCUS_Code, Num_Card, Year_Card,
Who, Who_Date, For_Whom, For_Whom_Note, Order_Content, Order_Pos,
UserN) Values (:1, :2, :3,
:4, :5, :6, :7, :8, :9,
:10)
***...***



Запись в таблице удаляется (вдруг что-то такое существует), а потом перезаписывается данными из клиента, где и есть моя проблемная запись Who_Date. Поэтому всё зависит от пользователя и его машины: если пользователь не поставит дату -> клиент отправит NULL -> и в результате из неправильных настроек машины пользователя мы можем получить в таблице ошибку.
Правильно я понял?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39493386
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot albatraus]semenar,
Delete From CustomsAdmin.OFFICE_ORDERS
Where DCUS_Code = 38 and
Type_Card = 1 and Num_Card = 62 and
Year_Card = 2017
[/src]
Ну тут как бы удаление. Хотя пристрелите меня, не понимаю зачем delete+insert, когда нужно update.
albatrausInsert Into CustomsAdmin.OFFICE_ORDERS
(DCUS_Code, Num_Card, Year_Card,
Who, Who_Date, For_Whom, For_Whom_Note, Order_Content, Order_Pos,
UserN) Values (:1, :2, :3,
:4, :5, :6, :7, :8, :9,
:10)
[/src]
Запись в таблице удаляется (вдруг что-то такое существует), а потом перезаписывается данными из клиента, где и есть моя проблемная запись Who_Date. Поэтому всё зависит от пользователя и его машины: если пользователь не поставит дату -> клиент отправит NULL -> и в результате из неправильных настроек машины пользователя мы можем получить в таблице ошибку.
Правильно я понял?
В вашем коде идет вставка, в том числе who_date. И есть переменная привязки. Явно null не прописан. Я канечно могу предложить решение данного гамнокодинга, а именно переименовать таблицу, сделать view, who_date varchar2. И думается весь гамногодинг заработает, особенно после delete+insert.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39493427
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenarЯвно null не прописан.
Я ничего явно прописанного в трассировке не увидел (может и не должен) Поэтому, исходя из изложенного, буду считать что Default
у WHO_DATE перезаписывается NULL из клиента. Думаю та этом обсуждение можно заканчивать.

semenar, Вы уж извините, но исправлять код я не стану... руки еще не доросли да и как оно в БД всё завязано я не знаю.

semenar , MaximaXXL, AmKad - спасибо Вам за помощь и подсказки.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39493428
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausНаверное я ввёл сообщество в заблуждение, извините.
Если в записи NULL то всё нормально работает, но иногда, насколько я понял, вместо NULL записывается какое-то значение отличимое от NULL ("0" или еще что), хоть клиент позволяет сохранять только дату или ничего.


albatrausЗапись в таблице удаляется (вдруг что-то такое существует), а потом перезаписывается данными из клиента, где и есть моя проблемная запись Who_Date. Поэтому всё зависит от пользователя и его машины: если пользователь не поставит дату -> клиент отправит NULL -> и в результате из неправильных настроек машины пользователя мы можем получить в таблице ошибку.
Правильно я понял?


Вот сейчас я ничего не понял. Так Вы ловите null, 0 или черную кошку в черной комнате?
т.е. Вы хотя-бы для себя очертили проблемму:
1. Вас null в поле устраивает или нет?
2. Проблемма возникает когда в поле Who_Date - что?
3. Можно ли воспроизвезти эту ошибку на тестовом/боевом сервере?
4. Есть ли понимание проблеммы вообще, или пока только из разряда мне рассказывали что приходилось удалять?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39493793
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL1. Вас null в поле устраивает или нет?
Да, устраивает.

MaximaXXL2. Проблемма возникает когда в поле Who_Date - что?
При просмотре через TOAD данного поля, он уходит в циклическую ошибку и я ничего не могу увидеть.
Запросом я вижу что там: 12.01.0201, 00.10.0951, 21.07.5201...

MaximaXXL3. Можно ли воспроизвезти эту ошибку на тестовом/боевом сервере?
Через клиента, я не могу. (Сейчас я считаю что проблема возникает из-за неправильных настроек пользователя)

MaximaXXL4. Есть ли понимание проблеммы вообще, или пока только из разряда мне рассказывали что приходилось удалять?
Для меня это "что-то-где-то" albatrausЯ с Oracle/MySQL на "ВЫ", так что сильно не бейте по рукам))
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503871
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
albatrausСейчас я считаю что проблема возникает из-за неправильных настроек пользователя
Пришлось пересмотреть это мнение так как ошибки появляются и спонтанно - «Раз, два… Меркурий во втором доме… луна ушла… шесть – несчастье… вечер - семь», - Воланд.
Сейчас решил сделать триггер:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE TRIGGER CUSTOMS.update_invalid_time
BEFORE INSERT OR UPDATE
ON CUSTOMSADMIN.OFFICE_ORDERS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
begin
	 if :new.who_date not between '01.01.2005' AND sysdate + 30 then :new.who_date := null;
end if;
end;
/


Но мне здесь не нравится sysdate + 30 поскольку я не знаю как оно поведет себя 2 декабря.

Когда я вставляю вместо sysdate + 30 это trunc(to_date(sysdate + interval '1' year),'YEAR') (лучше бы получить 31.12.текущего года), то я получаю ошибку PLS-00201: identifier 'NUMTOYMINTERVAL' must be declared

Подскажите как исправить ошибку или как по другому подойти к этому решению?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503888
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausto_date(sysdate
AmKadNLS-мина. Используй trunc
Ты когда на электронные часы смотришь, тоже выписываешь время прописью буквами на бумажку, а потом (возможно воспринимая как буквы другого языка) переводишь в цифры?
Не надо приводить тип данных к самому себе через неявное преобразование.

И сравнение со строкой '01.01.2005' точно такое же неявное преобразование без гарантии результата. Приведи всё к одному типу. Строки - через to_date с явной маской или литеральную запись.

Если у тебя в БД реально есть даты вида 00.01.1951 - это говорит о кривом заполнении поля. DEFAULT тебя не спасёт хотя бы потому, что по трассировке значение передаётся явно.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table dropme_t (id number not null, dt date default sysdate)
/

insert into dropme_t(id) values(1);

insert into dropme_t(id, dt) values(2, null);

select * from dropme_t;

drop table dropme_t;



И вопрос "на добивание", а в каком типе данных передаёт приложение? Там не чиселка случаем?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503890
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatraus
Код: plsql
1.
between '01.01.2005'

nls-быдлокод продолжается.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503953
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
envНе надо приводить тип данных к самому себе через неявное преобразование.

Так лучше будет: trunc((sysdate + interval '1' year),'YEAR')?


envИ сравнение со строкой '01.01.2005' точно такое же неявное преобразование без гарантии результата. Приведи всё к одному типу. Строки - через to_date с явной маской или литеральную запись.

to_date('01.01.2005','dd.mm.yyyy')

envИ вопрос "на добивание", а в каком типе данных передаёт приложение? Там не чиселка случаем?
Не знаю. Исходника нет.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503961
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausНо мне здесь не нравится sysdate + 30 поскольку я не знаю как оно поведет себя 2 декабря.
поведёт себя согласно правилам арифметики для дат..
trunc(last_day(sysdate)) ?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503968
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
envЕсли у тебя в БД реально есть даты вида 00.01.1951 - это говорит о кривом заполнении поля.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 DATE_MODIF WHO_DATE  
 ---------- ----------
 03.01.2012 21.11.8201
 25.12.2012 12.07.0201
 25.12.2012 15.07.0201
 21.11.2012 16.11.1201
 14.09.2012 14.09.0112
 18.09.2012 17.08.0912
 19.10.2012 18.10.8201

Потому и хочу триггер, но не знаю что делать с вот этим:
albatraustrunc((sysdate + interval '1' year),'YEAR'), то я получаю ошибку PLS-00201: identifier 'NUMTOYMINTERVAL' must be declared
Что я должен объявить(задекларировать)?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503974
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewerповедёт себя согласно правилам арифметики для дат..
trunc(last_day(sysdate)) ?

Это понятно, не повалятся ли ошибки, вот этого я не знаю.

Viewer trunc(last_day(sysdate)) ?
А как насчет последнего дня года, а не месяца?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503978
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausТак лучше будет: trunc((sysdate + interval '1' year),'YEAR')?
конечно, особенно для 29 февраля
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503983
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausА как насчет последнего дня года, а не месяца?
trunc(sysdate,'year') + interval '1' year - 1
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503992
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VieweralbatrausА как насчет последнего дня года, а не месяца?
trunc(sysdate,'year') + interval '1' year - 1

albatraustrunc((sysdate + interval '1' year),'YEAR'), то я получаю ошибку PLS-00201: identifier 'NUMTOYMINTERVAL' must be declared
albatrausЧто я должен объявить(задекларировать)?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39503995
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
identifier ' NUMTOYMINTERVAL '
этого в показанном вами коде нет, смотрите по полному тексту
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504000
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
albatrausА как насчет последнего дня года, а не месяца?
... по хорошему, в интервальной логике, вам всё же нужен первый день следующего года .
Иначе вы потеряете последний день года целиком.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504039
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewer,

albatraus
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE TRIGGER CUSTOMS.update_invalid_time
BEFORE INSERT OR UPDATE
ON CUSTOMSADMIN.OFFICE_ORDERS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
begin
	 if :new.who_date not between '01.01.2005' AND trunc(to_date(sysdate + interval '1' year),'YEAR') then :new.who_date := null;
end if;
end;
/



Это весь код триггера с ошибкой.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504071
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
identifier ' NUMTOYMINTERVAL '
опять же - этого в показанном вами коде нет...
Поищете поиском - возможно отыщете выше, ниже или правее отображемой области экрана.
Особенно правее, ловился на таком..
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504089
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vieweridentifier ' NUMTOYMINTERVAL '
опять же - этого в показанном вами коде нет...
Поищете поиском - возможно отыщете выше, ниже или правее отображемой области экрана.
Особенно правее, ловился на таком..
NUMTOYMINTERVAL - там такого нету.
На картинке указано место куда переходит курсор при компиляции.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504104
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замени
trunc(to_date (sysdate + interval '1' year),'YEAR')
на
trunc(sysdate,'year') + interval '1' year
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504107
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже, что GUI умничает и за занавесом само трансформирует код и налетает на то, о чём вас уже замучились предупреждать...
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504110
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и... приведённый выше код с картинкой не совпадает, я отвечал на первое...
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504119
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FYI
Код с картинки у меня скомпилился.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504123
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViewerFYI
Код с картинки у меня скомпилился.
А у меня нет, поэтому будет так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE TRIGGER CUSTOMSADMIN.update_invalid_time
BEFORE INSERT OR UPDATE
ON CUSTOMSADMIN.OFFICE_ORDERS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
begin
	 if :new.who_date not between to_date('01.01.2005', 'dd.mm.yyyy') AND trunc(sysdate + 366) then :new.who_date := null;
end if;
end;
/
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504134
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййalbatrausТак лучше будет: trunc((sysdate + interval '1' year),'YEAR')?
конечно, особенно для 29 февраля
albatrausА у меня нет, поэтому будет так:
+366
... что-то вы упорно не ладу с високосными годами
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504137
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewer,
предыдущий пост посмотрите, свою ошибку понял)) спасибо))
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504139
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лучше +366 чем 365, лучшего решения не придумал((
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504143
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сабж начинался с таблицы OFFICE_ORDERS, ее ddl вроде как приведен, и проблемного поля who_date.

триггер уже пишется на таблицу OFFICE_PERSONS и на поле date_executed

таки где порылась собака - непонятно.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504144
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatraus,

Код: plsql
1.
select add_months(trunc(sysdate,'year'),12) + 1 from dual;
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504145
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatrausViewer,
предыдущий пост посмотрите , свою ошибку понял)) спасибо))
не понял, что конкретно?
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504149
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VieweralbatrausViewer,
предыдущий пост посмотрите , свою ошибку понял)) спасибо))
не понял, что конкретно?
Ничего, сам себя уже запутал

K790таки где порылась собака - непонятно.
У меня две таблицы с проблемой дат.
Только в OFFICE_PERSONS она через клиента звучит как "Translate Error. Value out of bounds."
А записывает похожие даты как и в OFFICE_ORDERS.
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504157
albatraus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
envalbatraus,

Код: plsql
1.
select add_months(trunc(sysdate,'year'),12) + 1 from dual;


Спасибо!
...
Рейтинг: 0 / 0
Изменение значения в таблице по умолчанию через TOAD
    #39504160
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albatraus,

Только почитай про between внимательно, т.е. про сравнение на границах диапазонов. Может тебе надо явные >= и < использовать.
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение значения в таблице по умолчанию через TOAD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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