Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да извлека референтния курсор на Oracle в променливата на таблицата?

Името на променливата в кода по-горе ви подведе. Вашата променлива outtable е в table Тип. Не е възможно да извлечете данни от запис в таблица със записи, но можете да ги извлечете в самия запис.

DECLARE 
    REFCUR SYS_REFCURSOR;   
    TYPE RECORDTYPE IS RECORD (COL1 NUMBER, COL2  VARCHAR(100));
    outtable RECORDTYPE; 
BEGIN 
    SP_OUT_RefCur_PARAM(REFCUR);
    LOOP
        FETCH REFCUR INTO outtable;
        EXIT WHEN REFCUR%NOTFOUND;
        dbms_output.put_line(outtable.col1);
    END LOOP;
    CLOSE REFCUR;
END;

Актуализация: Ако искате да извлечете всички данни за по-добра производителност на вашето приложение, трябва да използвате командата BULK COLLECT:

DECLARE 
    REFCUR SYS_REFCURSOR;   
    TYPE RECORDTYPE IS
        RECORD (COL1 NUMBER, COL2  VARCHAR(100));
    TYPE TABLETYPE IS
        TABLE OF REFTABLETYPE
        INDEX BY PLS_INTEGER;
    outtable TABLETYPE; 
BEGIN 
    SP_OUT_RefCur_PARAM(REFCUR);
    LOOP
        FETCH REFCUR INTO BULK COLLECT outtable;
        EXIT WHEN outtable.COUNT = 0;

        FOR indx IN 1 .. outtable.COUNT 
        LOOP
            dbms_output.put_line(outtable(indx).col1);;
        END LOOP;
    END LOOP;
    CLOSE REFCUR;
END;

Забележка:потреблението на памет с оператора BULK е много повече, отколкото без.

Но ако просто извличате и обработвате редовете - ред по ред, няма нужда от BULK оператор, просто използвайте курсора FOR LOOP . (Попитайте Том )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle sql не е група по израз, докато се брои

  2. Как да актуализирате с вътрешно присъединяване в Oracle

  3. Oracle Apex:подход стъпка по стъпка за създаване на радио бутони в интерактивен отчет

  4. как да конвертирате низ от дата във формат на дата в oracle10g

  5. SQL - Намерете липсващи int стойности в предимно подредени последователни серии