将游标中的列重新排序作为引用游标传递给存储过程

时间:2018-03-26 12:15:07

标签: oracle plsql

这是我需要做的......我有一个简单的存储过程,定义如下......

TYPE p_CURSOR IS REF CURSOR;

CREATE PROCEDURE getAll_TableA(p_items OUT p_CURSOR) AS
BEGIN
    OPEN p_items FOR SELECT * FROM TableA;
END;

现在我有另一个存储过程

CREATE PROCEDURE reorderCursorColumns_TableA(i_items IN p_CURSOR, p_items OUT p_CURSOR) AS
BEGIN
   /*
   DO SOMETHING LIKE THIS
   */
   OPEN p_items FOR SELECT col5, col3, col2, col4, col1 FROM i_items;
END;

这可能吗?

基本上,给定一个游标,我可以从中选择重新排序列吗?

1 个答案:

答案 0 :(得分:1)

您无法将光标转换为表格。您需要编写一个表函数,然后用以下内容查询:

select x, y, z
from   table(yourfunction(i_items));

该函数将返回一个表(集合)。您需要定义符合您要求的集合类型。