我是PL/SQL的新手,並且使用混合表,所以如果我錯過了某些顯而易見的東西,我很遺憾,我認爲我已經獲得了大部分主要內容。訪問VARRAY中的對象內的數據Oracle
我最近遇到了一個問題,試圖訪問類型爲OBJECT的VARRAY中的數據。
我試圖改變已存儲在類型爲對象的VARRAY的對象中的一些數據,但仍然遇到錯誤。我嘗試訪問的表中的列是使用VARRAY作爲數據類型創建的。
我有一個對象:
CREATE TYPE MY_OBJECT AS OBJECT
MY_OBJECT有兩個值,日期和一個單一的炭。
這個對象,然後用來定義列的數據類型爲VARRAY類型的對象:
CREATE TYPE MY_COLUMN AS VARRAY(100) of MY_OBJECT
我已經通過兩個發佈了#2,試圖解決我的問題,列舉如下:
如何用簡單的更新語句更新表中的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');
這兩個嘗試拋出一個「缺少右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 2014-10-30 22:01:25