在我的存儲過程,我有一個代碼片段是這樣的:使用SYS_REFCURSOR填充一個Oracle集合類型和關閉遊標
OPEN p_result FOR
SELECT *
FROM TABLE (CAST (l_data AS Rpt_mapping_TableType));
COMMIT;
p_result
是SYS_REFCURSOR
類型的IN OUT
參數。 Rpt_mapping_TableType
是用戶定義的集合類型。 所以這個遊標只會填充Rpt_mapping_TableType,然後調用這個proc的程序將讀取Rpt_mapping_TableType的結果。 我的問題是COMMIT
在這段代碼中的用法是什麼?代碼作者說這是一種關閉遊標的方法。這樣對嗎?我的另一個問題是,如果我只想填充集合,我甚至需要做OPEN p_result FOR
。畢竟我沒有從光標讀取任何東西,所以:
SELECT * FROM TABLE (CAST (l_data AS Rpt_mapping_TableType));
應該就足夠了。
不是?