Функция REF () возвращает «Команда SQL не завершена должным образом» - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь ознакомиться с базой данных O / R, что побудило меня попытаться получить ссылки на объекты.

Началось с перечисления all_objects для конкретного пользователя и просто выбрал один объект (CF02) с типом TABLE, т.е. OBJECT_TYPE = 'TABLE'

Затем я открыл таблицу и просто выбрал одну из строк, первое поле (OBJECT_ID) которой равно 9142055040413031761.

Затем я попытался получить ref() в этом ряду.

  SELECT ref(cf) FROM rdbmgr.CF02 as cf
  WHERE OBJECT_ID = 9142055040413031761

Надеясь получить результат, аналогичный тому, что был в книгах Oracle, который является внутренним номером для местоположения объекта ...

1 Ответ

2 голосов
/ 09 апреля 2019

вы можете использовать функцию ref(), если ваша таблица была создана из типа объекта.

REF принимает в качестве аргумента корреляционную переменную (псевдоним таблицы), связанную со строкой таблицы объектов или представления объекта .

например. у вас есть тип объекта:

create or replace TYPE t_pos AS OBJECT 
( 
  x number,
  y number
)
/

Вы можете создать таблицу

 CREATE TABLE position OF t_pos ;

-- insert some data for test
insert into position values (1,2);

так что у вас есть стол position теперь вы можете сделать выбор с помощью функции ref

select ref(t) from  position  t;

Результат

REF(E)
--------------------------------------------------------------------------------
0000280209587CADBD96F74009BBF01C1596D74E72E7986EC7F3AF40B4A264DA1BE6FE27D30040B2
790000

если ваша таблица была создана как create table position(x number, y number) Вы не можете использовать ref функцию в вашем select

Ознакомьтесь с документацией здесь

...