請注意一些好進一步的信息,我不熟悉.NET,所以我從字面上寫這封信,你的問題:「我怎麼能返回一個嵌套oracle中的存儲過程中的表「。 我不確定「在我的.net客戶端中使用」部分,因爲我不確定是否可以直接在.net代碼中使用返回的記錄類型/表類型。
我做了一些研究,我學到的是在任何oracle客戶端界面中都沒有對記錄類型的直接支持。人們通常會做的是圍繞從函數返回的表類型創建一個包裝過程,以將其轉換爲引用遊標並在自定義代碼中使用引用遊標。
CREATE OR REPLACE TYPE changes AS OBJECT(
col1 VARCHAR2(20),
col2 VARCHAR2(20),
col3 VARCHAR2(20)
);
CREATE OR REPLACE TYPE collection is table of changes;
CREATE OR REPLACE PACKAGE test_pkg AS
FUNCTION test_fn RETURN collection;
END test_pkg;
CREATE OR REPLACE PACKAGE BODY test_pkg
AS
FUNCTION test_fn RETURN collection AS
l_collection collection;
BEGIN
l_collection := collection();
l_collection.EXTEND;
l_collection(l_collection.LAST) := changes('Subhasis','Mukherjee','Male');
RETURN l_collection;
END test_fn;
END test_pkg;
SELECT * FROM table(test_pkg.test_fn)
col1 col2 col3
----------- ------------- --------------
Subhasis Mukherjee Male