【发布时间】:2012-08-15 20:14:31
【问题描述】:
在我的存储过程中,我有一个这样的代码 sn-p:
OPEN p_result FOR
SELECT *
FROM TABLE (CAST ( l_data AS Rpt_mapping_TableType));
COMMIT;
p_result 是IN OUT 类型的参数SYS_REFCURSOR。Rpt_mapping_TableType 是用户定义的集合类型。
所以这个游标只会填充 Rpt_mapping_TableType,然后调用这个 proc 的程序将从 Rpt_mapping_TableType 读取结果。
我的问题是COMMIT 在这个 sn-p 中有什么用?代码作者说这是关闭游标的一种方式。这样对吗?我的另一个问题是,如果我只想填充集合,我什至需要做OPEN p_result FOR。毕竟我没有从光标读取任何内容:
SELECT * FROM TABLE (CAST ( l_data AS Rpt_mapping_TableType));
应该够了。
没有?
【问题讨论】:
标签: oracle plsql cursor oracle11g