我是 PL/SQL 的新手并且使用混合表,所以如果我错过了一些明显的东西,我很抱歉,我以为我已经把大部分主要内容都搞定了。
我最近遇到了一个尝试访问 OBJECT 类型的 VARRAY 中的数据的问题。
我正在尝试更改已存储在 VARRAY 类型对象中但不断遇到错误的对象中的一些数据。我尝试访问的表中的列是使用 VARRAY 作为数据类型创建的。
我有一个对象:
CREATE TYPE MY_OBJECT AS OBJECT
MY_OBJECT 有两个值,DATE 和一个字符。
然后使用此对象将列的数据类型定义为 OBJECT 类型的 VARRAY:
CREATE TYPE MY_COLUMN AS VARRAY(100) of MY_OBJECT
我已经通过 Stackoverflow 上的两个帖子尝试解决我的问题,如下所列:
如何使用简单的更新语句更新表中的可变数组类型?
SQL 从 Oracle 11g 数据库中的 VARRAY 检索对象
这是我在通过那些尝试访问数据以便我可以更改它之后所拥有的。
UPDATE my_table SET my_column = (my_object(date), my_object('X'));
我也试过
UPDATE my_table SET my_column = (date, 'X');
这两次尝试引发了“缺少右括号”错误,所以我继续使用不同的方法。
INSERT INTO my_table
VALUES
(
1, my_column(varray)(my_object(1, date, 'X'))
);
这会引发“没有足够的值”错误。
我的问题有两个部分:
1) 表中总共有 60 列,为了解决这个“没有足够的值”错误,我必须为每列输入值吗?
我认为我可以直接访问该列,而无需处理我不需要访问的任何其他列。
2)为了访问数组中的对象,单个对象调用(如我的第三次尝试)是要走的路吗?
我希望只是尝试访问 my_column,访问 VARRAY,然后访问 VARRAY 中的对象,以便我可以根据需要在对象中添加或更改数据。
我认为这很简单,但我整天都在兜圈子。
任何建议将不胜感激!