請問我可以幫助您將值插入表中。該表稱爲PurchaseOrder_objtab。這裏是表格的類型:將數據插入嵌套表
CREATE TYPE PurchaseOrder_objtyp AUTHID CURRENT_USER AS OBJECT
(
PONo NUMBER,
CUST_ref REF Customer_objtyp,
OrderDate DATE,
ShipDate DATE,
LineItemList_ntab LineItemList_ntabtyp,
ShipToAddr_obj Address_objtyp
)
/
LineItemList_ntab是一個嵌套表。
這裏是LineItemList_ntabtyp的創建代碼:
CREATE TYPE LineItem_objtyp AS OBJECT (
LineItemNo NUMBER,
Stock_ref REF StockItem_objtyp,
Quantity NUMBER,
Discount NUMBER
)
/
CREATE TYPE LineItemList_ntabtyp AS TABLE of LineItem_objtyp
/
下面是一些插入代碼,做工作:
INSERT INTO PurchaseOrder_objtab
SELECT 1008, REF(C),
SYSDATE, '12-MAY-1999',
LineItemList_ntabtyp(),
NULL
FROM Customer_objtab C
WHERE C.CustNo = 1;
在上面的代碼中,LineItemList_ntab是一個空LineItemList_ntabtyp。我想爲這個嵌套表添加值,而不是在INSERT INTO代碼中爲空。
下面是一些我試圖插入具有值的代碼:
INSERT INTO PurchaseOrder_objtab
SELECT 1008, REF(C),
SYSDATE, '12-MAY-1999',
LineItemList_ntabtyp(1, REF(StckItem), 10, 1) FROM Stock_objtab StckItem WHERE StckItem.StockNo = 1004,
NULL
FROM Customer_objtab C
WHERE C.CustNo = 1;
INSERT INTO PurchaseOrder_objtab
SELECT 1008, REF(C),
SYSDATE, '12-MAY-1999',
INSERT INTO LineItemList_ntab SELECT 1, REF(StckItem),10,1 FROM Stock_objtab StckItem WHERE StckItem.StockNo = 1004,
NULL
FROM Customer_objtab C
WHERE C.CustNo = 1;
第一插入語句的上方產生以下錯誤:
SQL Error: ORA-00933: SQL command not properly ended
第二插入語句的上方產生以下錯誤:
SQL Error: ORA-00936: missing expression
請問我可以幫助您成功inser t值到LineItemList_ntab嵌套表中?
UPDATE
我有這樣的代碼來插入數據:
INSERT INTO PurchaseOrder_objtab
SELECT
1008,
REF(C),
SYSDATE,
'12-MAY-1999',
(SELECT LineItemList_ntabtyp(LineItem_objtyp(1, REF(StckItem), 10, 1)) FROM Stock_objtab StckItem WHERE StckItem.StockNo = 1004),
NULL
FROM Customer_objtab C
WHERE C.CustNo = 1;
現在我收到以下錯誤:
SQL Error: ORA-22979: cannot INSERT object view REF or user-defined REF 22979. 00000 - "cannot INSERT object view REF or user-defined REF" *Cause: Attempt to insert an object view REF or user-defined REF in a REF column created to store system generated REF values" *Action: Make sure the REF to be inserted is not from an object view or from a user-defined REF column
我敢肯定,這個錯誤是因爲我可能不正確地創建表,下面是我的表爲PurchaseOrder_objtab創建代碼:
CREATE TABLE PurchaseOrder_objtab OF PurchaseOrder_objtyp(
PRIMARY KEY (PONo),
FOREIGN KEY (Cust_ref) REFERENCES Customer_objtab)
OBJECT ID PRIMARY KEY
NESTED TABLE LineItemList_ntab STORE AS PoLine_ntab(
(PRIMARY KEY(NESTED_TABLE_ID, LineItemNo))
ORGANIZATION INDEX COMPRESS)
RETURN AS LOCATOR
/
下面是創建嵌套表的代碼:
CREATE TYPE LineItemList_ntabtyp AS TABLE of LineItem_objtyp
/
UPDATE2
此代碼成功地將信息添加到表:
INSERT INTO PurchaseOrder_objtab
SELECT 1009, REF(C),
SYSDATE, '10-MAY-1999',
LineItemList_ntabtyp(),
NULL
FROM Customer_objtab C
WHERE C.CustNo = 1;
所以在錯誤與LineItemList_ntabtyp有關。
下面是表創建代碼:
CREATE TABLE PurchaseOrder_objtab OF PurchaseOrder_objtyp(
PRIMARY KEY (PONo),
FOREIGN KEY (Cust_ref) REFERENCES Customer_objtab)
OBJECT ID PRIMARY KEY
NESTED TABLE LineItemList_ntab STORE AS PoLine_ntab((PRIMARY KEY(NESTED_TABLE_ID,LineItemNo)) ORGANIZATION INDEX COMPRESS) RETURN AS LOCATOR/
我相信錯誤有事情做與對象標識符對上述表的主鍵。
UPDATE3
謝謝你的代碼。如何將多個值插入到嵌套表中。
你對一個項目的代碼行是:
(SELECT LineItemList_ntabtyp(LineItem_objtyp(1, REF(StckItem), 10, 1)) FROM Stock_objtab WHERE StockNo = 1004),
NULL)
怎麼樣,如果我想補充兩個項目,這兩個StockNo 1004,1005?它是這樣的:
(SELECT LineItemList_ntabtyp(LineItem_objtyp(1, REF(StckItem), 10, 1)) FROM Stock_objtab WHERE StockNo = 1004) AND (SELECT LineItemList_ntabtyp(LineItem_objtyp(2, REF(StckItem), 10, 1)) FROM Stock_objtab WHERE StockNo = 1005),
NULL)
UPDATE4
如果,我添加三個項目嵌套表,做了「FROM DUAL」語句逗留「FROM DUAL」,還是將其更改爲反映三個項目的東西?此外,沒有了「UNION ALL」語句如下所示:
(
SELECT LineItemList_ntabtyp(
SELECT LineItem_objtyp(1, REF(StckItem), 10, 1) FROM Stock_objtab WHERE StockNo = 1004
UNION ALL
SELECT LineItem_objtyp(2, REF(StckItem), 10, 1) FROM Stock_objtab WHERE StockNo = 1005
UNION ALL
SELECT LineItem_objtyp(3, REF(StckItem), 10, 1) FROM Stock_objtab WHERE StockNo = 1006
)
FROM DUAL
)
謝謝你的代碼。你可以看看我的OP更新。 – user2381256
查看我更新的帖子,我強烈建議你擺脫所有這些對象,並使用普通表格。並且僅從前端級別的數據創建對象,而不是在數據庫中創建對象,這不是目的。 – ZZa
您的代碼生成此錯誤:SQL錯誤:ORA-00904:「STCKITEM」:無效的標識符。我的更新修復了這個問題,但引用錯誤發生。另外,我需要使用從對象創建的表格。這是在我的簡報中這樣做。 – user2381256