Ref-Cursor in Oracle und PL/SQL

Datum 02.07.2013 19:26 Uhr Kommentare (0)

Konfiguration Testszenario

DROP   TABLE tbl_refcur;  
CREATE TABLE tbl_refcur 
(
   firstname       VARCHAR2(25)
  ,lastname        VARCHAR2(25)
  ,age             NUMBER
)

 

Inhalt Testszenario

INSERT INTO tbl_refcur VALUES ('Christian','Moser'   ,49); 
INSERT INTO tbl_refcur VALUES ('Barbara'  ,'Sauter'  ,46); 
INSERT INTO tbl_refcur VALUES ('Arno'     ,'Sauter'  ,46); 
INSERT INTO tbl_refcur VALUES ('Florian'  ,'Sauter'  ,22); 
INSERT INTO tbl_refcur VALUES ('Andreas'  ,'Moser'   ,41); 
INSERT INTO tbl_refcur VALUES ('Dominic'  ,'Moser'   ,15); 
INSERT INTO tbl_refcur VALUES ('Hanna'    ,'Moser'   ,72); 
INSERT INTO tbl_refcur VALUES ('Gerhard'  ,'Moser'   ,75); 
INSERT INTO tbl_refcur VALUES ('Alvino'   ,'Martinus',33); 

 

 

Quellcode

SET SERVEROUTPUT ON 
DECLARE
   v_cond1         VARCHAR2(10);
   v_firstname     tbl_refcur.firstname%TYPE; 
   v_lastname      tbl_refcur.lastname%TYPE; 
   v_age           tbl_refcur.age%TYPE; 
   v_refcur        SYS_REFCURSOR;


   PROCEDURE prc_refcur 
   (
      p_cond1         VARCHAR2,
      p_refcur        IN OUT SYS_REFCURSOR 
   )
   IS
   BEGIN
        OPEN p_refcur 
         FOR 
      SELECT firstname
            ,lastname
            ,age  
        FROM tbl_refcur 
       WHERE firstname like '%'||p_cond1||'%' 
          OR lastname like '%'||p_cond1||'%';
   END;


BEGIN
    dbms_output.enable (10000000); 
    v_cond1 := 'oser'; 
    prc_refcur (v_cond1, v_refcur);
    LOOP
        FETCH v_refcur INTO v_firstname, v_lastname, v_age;
        EXIT WHEN v_refcur%NOTFOUND;
        dbms_output.put_line(v_firstname||' '||v_lastname||' '||v_age);
    END LOOP;
    CLOSE v_refcur;
END;

 

Ausgabe

Christian Moser 49
Andreas Moser 41
Dominic Moser 15
Hanna Moser 72
Gerhard Moser 75

Download [refcursor1.txt]

Zurück

Kommentare

Einen Kommentar schreiben







Bitte addieren Sie 1 und 8.