PROCEDURE Get_Remain_Info( remain_cursor_ OUT sys_refcursor ) IS BEGIN OPEN remain_cursor_ FOR select month,maintain_id,count(1) from C_REMNANT_WO_NO_TAB group by month,maintain_id order by month,maintain_id; END Get_Remain_Info;
在PL/SQL运行后,点击
可以查看结果集。未解决问题:游标关闭。据说在java调用的时候,可以关闭,未做验证。
--------------------------------------------------------------------------------------------------------------------------------
转载:https://www.cnblogs.com/JourneyOfFlower/p/10876575.html
--Oracle使用游标查询结果集所有数据 DECLARE myTabelName NVARCHAR2(200):=''; --表名 myTableRowComment NVARCHAR2(200):=''; --行内容 result VARCHAR2(2000):=''; --结果 CURSOR myCursor IS SELECT * FROM 结果集(表名/视图名/查询结果) ORDER BY (结果集中的列名);--定义游标 myRecord myCursor%ROWTYPE; --定义游标记录类型 BEGIN OPEN myCursor; --打开游标 IF myCursor %ISOPEN THEN --判断打开成功 ---------------------游标打开成功 BEGIN LOOP --循环获取记录集 BEGIN FETCH myCursor into myRecord; IF myCursor%FOUND THEN --游标的FOUND属性判断是否有记录 BEGIN myTabelName:='TEC_PARTTEC'; myTableRowComment:=myRecord.ID||' '||myRecord.CREATEDATE||' ' ||myRecord.CREATEUSER||' '||myRecord.ORGANIZATIONID||' ' ||myRecord.PARTID||' '||myRecord.PROCESSTYPE||' ' ||myRecord.VERSION||' '||myRecord.REMARK||' ' ||myRecord.STATE; result:='表名 '||myTabelName||' 列值 '||myTableRowComment; result:=myTabelName||' '||myTableRowComment; DBMS_OUTPUT.PUT_LINE(result); END; ELSE EXIT; --游标中的记录为空 退出 END IF; --结束IF语句 END LOOP; --循环获取记录集 END ELSE DBMS_OUTPUT.PUT_LINE('游标没有打开'); END IF; CLOSE myCursor; END;
--------------------------------------------------------------
改成下面的方法了:
包头:
CREATE OR REPLACE TYPE OrderRowType AS OBJECT (columns1 VARCHAR2(10),columns2 VARCHAR2(20),columns3 VARCHAR2(100),columns4 VARCHAR2(5), columns5 NUMBER,columns6 NUMBER );
CREATE OR REPLACE TYPE OrderTableType AS TABLE OF OrderRowType;
FUNCTION Get_Test RETURN OrderTable1 pipelined;
包体:
FUNCTION Get_Test RETURN OrderTableType pipelined IS rowInfo_ OrderRowType; CURSOR get_info IS SELECT * FROM tableA ;
BEGIN FOR rec_data_ IN get_info LOOP rowInfo_ := OrderRowType(rec_data_.columns1,rec_data_.columns2,rec_data_.columns3,rec_data_.columns4,rec_data_.columns5,rec_data_.columns6); pipe ROW(rowInfo_); END LOOP; RETURN; END Get_Test;