Функция REF() возвращает "команда SQL неправильно завершена"

Я пытаюсь ознакомиться с базой данных 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, который является внутренним номером для местоположения объекта...

Ничего общего с ref - удалите as из as cf. Вы не можете использовать as для псевдонимов таблиц в Oracle.

Alex Poole 09.04.2019 18:34

я попробовал это, затем выдает ошибку "CF": неверный идентификатор

jayykaa 09.04.2019 18:35

Является ли CF02 таблица объектного типа или обычная таблица со столбцом объекта? Пожалуйста, включите соответствующий DDL в свой вопрос.

Alex Poole 09.04.2019 18:37

в таблице ALL_OBJECTS в столбце OBJECT_TYPE он отображается как «ТАБЛИЦА»

jayykaa 09.04.2019 18:40

я также не уверен, как я получу DDL - я не делал эту базу данных. - но я бы предположил, что SELECT * ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' будет отображать только таблицы типа объекта...

jayykaa 09.04.2019 18:50
select dbms_metadata.get_ddl('TABLE', 'CF02', 'RDBMGR') from dual;, но вам потребуются либо мощные привилегии, либо вход в систему как rdbmgr. И вам может понадобиться set long 5000 или что-то подобное, чтобы увидеть все это. И вам также нужен DDL для типа (ов) объекта.
Alex Poole 09.04.2019 18:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
6
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

REF takes as its argument a correlation variable (table alias) associated with a row of an object table or an object view.

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

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

Посмотрите документацию здесь

благодарить! поэтому таблица объектов должна быть создана с использованием типа объекта для оракула, чтобы предлагать какие-либо ссылки на объекты в таблице... я думаю, потому что, хотя они являются похожими объектами, технически они не являются одним и тем же типом объекта ?

jayykaa 09.04.2019 20:45

Другие вопросы по теме