在我的存储过程中,我有一个这样的代码片段:
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
这个片段的用途是什么?代码作者说这是关闭游标的一种方式。这样对吗?我的另一个问题是,如果我只想填充集合,我是否还需要这样做OPEN p_result FOR
。毕竟我没有从光标中读取任何内容,所以:
SELECT * FROM TABLE (CAST ( l_data AS Rpt_mapping_TableType));
应该足够了。
不?