Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как сделать обычное поле - вычисляемым?  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
Всем привет!

Скажите, пожалуйста, как обычное поле сделать вычисляемым?

попробовала так:
alter table tusers MODIFY refusal as (case when date_refusal is not null then 10 end)


ругается:
автор
[Error] Execution (1: 28): ORA-54026: Real column cannot have an expression


Может быть в Toad есть специальный интерфейс для этого? Подскажите пожалуйста, где можно посмотреть?
17 окт 12, 08:41    [13330784]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
zvezda_t,

а что мешает во время селекта выбрать так...
select nvl2(date_refusal,refusal,10)...
17 окт 12, 08:51    [13330856]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
яугаруд
Guest
drop column
add
17 окт 12, 08:52    [13330858]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
Ramin
zvezda_t,

а что мешает во время селекта выбрать так...
select nvl2(date_refusal,refusal,10)...


Это я для примера показала, на самом деле там будут проверки посложнее.
alter table tusers MODIFY refusal as (case when date_refusal is not null and field1>=1 then 10 else ... end)

Удалить - не вариант. Это поле уже имеет значения и сам код вычисляемого поля, будет в последствии модифицироваться.
17 окт 12, 10:20    [13331416]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
яугаруд
Guest
zvezda_t
Удалить - не вариант. Это поле уже имеет значения и сам код вычисляемого поля, будет в последствии модифицироваться.
Ты видно блондинка, раз не понимаешь, что вычислимое поле на то и вычислимое, что не может и не должно иметь каких-то там "уже" значений. Парадокс.
17 окт 12, 10:46    [13331638]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1310
zvezda_t,

/*потирая хрустальные шары*/
тебе, может, значение по умолчанию нужно?
17 окт 12, 10:53    [13331688]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
zvezda_t,

вам нужно вычислять поле во время селекта....

select (case when date_refusal is not null and field1>=1 then 10 else ... end), .....
17 окт 12, 11:10    [13331810]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
zvezda_t,

Если оно вычисляемое то почему забита константа 10, значение по умолчанию, или всегда будет 10 как не вычисляй? :)
17 окт 12, 11:36    [13332016]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
яугаруд
zvezda_t
Удалить - не вариант. Это поле уже имеет значения и сам код вычисляемого поля, будет в последствии модифицироваться.
Ты видно блондинка, раз не понимаешь, что вычислимое поле на то и вычислимое, что не может и не должно иметь каких-то там "уже" значений. Парадокс.


Ой. Да, была не права. Извините!
Хорошо, поле это без значений, Вы правы!

Но удалять не хочется, потому что проще же код править, чем удалять и заново создавать поле.
17 окт 12, 12:07    [13332364]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
oragraf, нет мне не нужно значение по умолчанию. Мне нужно вычисляемое поле.


Ramin
zvezda_t,

вам нужно вычислять поле во время селекта....

select (case when date_refusal is not null and field1>=1 then 10 else ... end), .....


У меня таких запросов много. и когда мне потребуется изменить код case when ... else ... end,
то придется править кучу запросов по всему приложению.

Проще же в одном месте записать и работать потом с полем refusal.
17 окт 12, 12:13    [13332424]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
яугаруд, сделала как Вы сказали.

В итоге на самом деле, код вычисляемого значения записался в поле Default и еще галочка появилась Virtual.
Lecter, oragraf значит вы были правы - это и есть дефолтное динамическое значение)
Разобралась.

Всем спасибо.
17 окт 12, 12:19    [13332469]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
ДохтаР
Member [заблокирован]

Откуда: Новоукраинск
Сообщений: 16864
zvezda_t
ремя селекта....

select (case when date_refusal is not null and field1>=1 then 10 else ... end), .....




Проще же в одном месте записать и работать потом с полем refusal.[/quot]

2 all

Подскажите, а то чуствую пробел в знаниях .
select (case when ...... ) ......

В скобках выделенный это PL/SQL код ?
С переключением контекста и прочими "достоинствами".
17 окт 12, 12:40    [13332728]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
яугаруд
Guest
zvezda_t
Разобралась.
Радует одно: неприятности от действий такой сотрудницы отдела автоматизации грозят только самому замшелому предприятию.
17 окт 12, 12:41    [13332754]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
ДональдсТроль - позорище
Guest
ДохтаР
В скобках выделенный это
http://docs.oracle.com/cd/E11882_01/server.112/e26088/expressions004.htm#i1033392
17 окт 12, 12:44    [13332791]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
ДохтаР
Member [заблокирован]

Откуда: Новоукраинск
Сообщений: 16864
ДональдсТроль - позорище
ДохтаР
В скобках выделенный это
http://docs.oracle.com/cd/E11882_01/server.112/e26088/expressions004.htm#i1033392


Пасиба :)
17 окт 12, 12:54    [13332898]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1273
[src PLSQL]

У меня таких запросов много. и когда мне потребуется изменить код case when ... else ... end,
то придется править кучу запросов по всему приложению.

Проще же в одном месте записать и работать потом с полем refusal.[/quot]

как вариант сделать вью на таблицу (ы) куда добавить новое вычисляемое поле (я)
и работать уже с вью а не с таблицей
17 окт 12, 16:53    [13335539]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
zvezda_t
яугаруд, сделала как Вы сказали.

В итоге на самом деле, код вычисляемого значения записался в поле Default и еще галочка появилась Virtual.
Lecter, oragraf значит вы были правы - это и есть дефолтное динамическое значение)
Разобралась.

Всем спасибо.

обострение просто какое-то..
вычисляемое - это вычисляемое, а никакое не дефолтное.
вычисление имеет результат и ничего кроме результата.
17 окт 12, 17:01    [13335612]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать обычное поле - вычисляемым?  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
orawish,

Ошибка вычисления? Деление на ноль?
17 окт 12, 17:49    [13335998]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить