powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / chain of type attr
3 сообщений из 3, страница 1 из 1
chain of type attr
    #39289918
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
create type X1 as object
(
  x integer
)
/

create type X2 as object
(
  x x1
)
/

create type X3 as object
(
  x x2
)
/

declare
  x x3;
begin
  dbms_output.put_line('result ' || nvl(to_char(x.x.x.x), 'null'));
end;
/

result null


Видим что возвращает null ни смотря на то что запрашиваются отрабуты не инициализированных объектов.
Можно ли измнить поведение параеметром или как-то, чтобы если объект не инициализирован, то был экзепшен?
...
Рейтинг: 0 / 0
chain of type attr
    #39290061
plsqlO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://docs.oracle.com/database/121/ADOBJ/adobjplsql.htm#ADOBJ7175

How PL/SQL Treats Uninitialized Objects
In an expression, attributes of an uninitialized object evaluate to NULL.

Видимо только через методы-геттеры. При обращении к такому методу проверка на неинициализированный объект уже срабатывает:

create or replace type X1 as object
(
x integer,
member function getX return x%type
)
/

create or replace type body X1 is

member function getX return x%type is
begin
return self.x;
end;

end;
/

SQL> set serveroutput on
declare
x x3;
begin
dbms_output.put_line('result ' || nvl(to_char(x.x.x.getX), 'null'));
end;
SQL> 2 3 4 5 6 /
declare
*
ERROR at line 1:
ORA-30625: method dispatch on NULL SELF argument is disallowed
ORA-06512: at line 4
...
Рейтинг: 0 / 0
chain of type attr
    #39290165
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plsqlO,

Геттеры было бы хорошо, но хотелось бы эти объекты потом в SQL использовать, а при таком подходе он весь объект в SQL суёт, что не выглядит хорошо.

Select
...
from
...
where
id = x.x.x.getX

В SQL улетит весь X объект вместо результата метода. Можно предвычислять в переменную, но таких мест уж очень много, не красиво получится.
Второе таким образом в коде создаться множество вычисляемых методов, что тоже не выглядит хорошо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / chain of type attr
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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