Я новичок в PL/SQL и работаю с гибридными таблицами, поэтому, извините, если я пропустил что-то очевидное, я думал, что получил большую часть основного материала.Доступ к данным внутри объекта, который находится в VARRAY Oracle
Недавно я столкнулся с проблемой с попыткой доступа к данным в VARRAY типа OBJECT.
Я пытаюсь изменить некоторые данные в объекте, который был сохранен в объекте типа VARRAY, но продолжает работать с ошибками. Столбец в таблице, который я пытаюсь получить, был создан с использованием VARRAY в качестве типа данных.
У меня есть объект:
CREATE TYPE MY_OBJECT AS OBJECT
my_object имеет два значения, дата и один символ.
Затем этот объект используется для определения типа данных столбца в качестве VARRAY типа OBJECT:
CREATE TYPE MY_COLUMN AS VARRAY(100) of MY_OBJECT
Я прошел через два размещения на Stackoverflow, чтобы попытаться решить мою проблему, перечисленные ниже:
Как обновить тип varray в таблице с помощью простого оператора обновления?
SQL Retrieving an object from VARRAY in Oracle 11g Database
Вот что я после прохождения через те, чтобы попытаться получить доступ к данным, так что я могу изменить его.
UPDATE my_table SET my_column = (my_object(date), my_object('X'));
Я также попытался
UPDATE my_table SET my_column = (date, 'X');
Эти две попытки бросить "Missing Right Paraenthesis" ошибка, поэтому я пошел к другому методу.
INSERT INTO my_table
VALUES
(
1, my_column(varray)(my_object(1, date, 'X'))
);
Это вызывает ошибку «Недостаточно значений».
Мой вопрос состоит из двух частей:
1) Есть 60 столбцов в общей сложности в таблице, для того, чтобы обойти эту ошибку «Не хватает значения» я должен войти в значения для каждого столбца?
Я думал, что могу получить прямой доступ к столбцу, не имея дело с каким-либо другим столбцом, к которому мне не нужно было обращаться.
2) Чтобы получить доступ к объекту в массиве, может ли быть один вызов объекта (например, моя третья попытка)?
Я надеялся просто попытаться получить доступ к my_column, получить доступ к VARRAY, а затем получить доступ к объекту в VARRAY, чтобы я мог добавлять или изменять данные по мере необходимости в объекте.
Я думал, что это довольно прямолинейно, но я целый день ходил кругами.
Любой совет будет рад!
Спасибо за вашу помощь, ваше понимание привело меня, чтобы найти то, что работал. Вы можете использовать такой синтаксис, как UPDATE my_table SET my_column SET = (my_array (my_object (TO_DATE ('date', 'mm/dd/yyyy'), ('X'))); – user3183843