powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Неявное преобразование типа во вьюхе
4 сообщений из 4, страница 1 из 1
Неявное преобразование типа во вьюхе
    #40048024
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица TBL (id integer, name varchar2(255))

По ней имеется вьюха:
Код: plsql
1.
2.
create view v_TBL as
select id,name from TBL;


Имеется триггер instead of на эту вьюху, в котором делается уже непосредственный апдейт в саму таблицу.

Хочется добавить виртуальный символьный столбец ко вьюхе, так чтобы его значение при апдейте вьюхи можно было перехватить в триггере:
Код: plsql
1.
2.
3.
create view v_TBL as
select id, name, '1' virt
from TBL;


Если делать апдейт вирт столбца во вьюхе:
Код: plsql
1.
2.
3.
update v_TBL 
set virt = '6789'
where id=1


то в триггере можно получить его значение:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create trigger tr_TBL
  instead of update on v_TBL
  for each row
begin
   if updating then
     :new.virt
     ...
end;


Беда только в том, что в триггере получаем ровно столько символов значения сколько неявно определили при определении столбца во вьюхе, т.е. в нашем примере если '1' virt, то :new.virt = '6', а не '6789', если '11' virt, то :new.virt = '67' и т.д.

Как бы так определить этот столбец во вьюхе, чтобы оракл понимал, что это символьное поле переменной длины например varchar2(255) ?
...
Рейтинг: 0 / 0
Неявное преобразование типа во вьюхе
    #40048026
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CAST().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неявное преобразование типа во вьюхе
    #40048027
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verter,

Код: plsql
1.
2.
3.
create view v_TBL as
select id, name, cast('1' as varchar2(255)) virt
from TBL;
...
Рейтинг: 0 / 0
Неявное преобразование типа во вьюхе
    #40048031
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASNexus

Код: plsql
1.
2.
3.
create view v_TBL as
select id, name, cast('1' as varchar2(255)) virt
from TBL;



Да, работает. Спасибо!

Извините за это глупый вопрос, я на самом деле пробывал так, но писал cast('1' as varchar2) и мне, естественно, оракл ругался - не нужно такие вещи делать перед праздником :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Неявное преобразование типа во вьюхе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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