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

Връщане на референтен курсор от Oracle функция

Няколко грешки, погледнете моя работен пример, току-що промених таблицата източник:

CREATE OR REPLACE FUNCTION  TEST_CUR RETURN SYS_REFCURSOR
AS
   VAR_REF SYS_REFCURSOR;
BEGIN
    OPEN VAR_REF FOR
        SELECT *
        FROM DUAL;

    RETURN VAR_REF;
END;

Тук не е необходимо да отваряте курсора, той вече е отворен.

DECLARE
    L_VAR SYS_REFCURSOR;
    L_STATUS VARCHAR2(10);
BEGIN
    L_VAR:=TEST_CUR;
    LOOP
        FETCH L_VAR INTO L_STATUS;
        EXIT WHEN L_VAR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE( L_STATUS );
    END LOOP;
    CLOSE L_VAR;
END;

Наистина интересна публикация, показваща как да тествате оракулски курсори:

5 различни начина за тествайте резултатите от Oracle Ref Cursor



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

  2. Наследяване в дизайна на бази данни

  3. Брой редове в Oracle SQL Изберете?

  4. Как да върнете дробни секунди от стойност на дата и час в Oracle

  5. Реализация на функцията за препълване на Listagg (Oracle SQL)