• Oracle 返回结果集


    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;
  • 相关阅读:
    luogu 2742 二维凸包
    poj2398 Toy Storage 计算几何,叉积,二分
    luoguP1742 最小圆覆盖
    bzoj4501 旅行
    cf1173 D. Nauuo and Circle
    bzoj3745: [Coci2015]Norma 分治,单调队列
    bzoj1176: [Balkan2007]Mokia cdq
    luoguP3964 [TJOI2013]松鼠聚会
    浅谈数学期望
    tarjan模板(带注释)
  • 原文地址:https://www.cnblogs.com/sunice/p/13850499.html
Copyright © 2020-2023  润新知