Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fetch the cursor data in oracle stored procedure

create or replace
PROCEDURE get_new
AS
    CUST_ID varchar2(100);
    ROUTERNAME_N VARCHAR2(100); 
BEGIN
    CURSOR c1 IS
    SELECT TRAFFIC_CUST_ID,ROUTERNAME INTO CUST_ID,ROUTERNAME_N
    FROM INTERFACE_ATTLAS
    WHERE rownum > 3;

    my_ename INTERFACE_ATTLAS.TRAFFIC_CUST_ID%TYPE;
    my_salary INTERFACE_ATTLAS.ROUTERNAME%TYPE;

    LOOP
        FETCH c1 INTO my_ename;
        FETCH c1 INTO my_salary;
        EXIT WHEN c1%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(my_ename);
    end loop;
end;

I am new to oracle and stored procedure. I am trying to get the rows using cursor fetch, and getting following error:

PLS-00103: Encountered the symbol "C1" when expecting one of the following:
:= . ( @ % ;
like image 504
user3829086 Avatar asked Jan 27 '26 17:01

user3829086


1 Answers

Rewrite it like this:

create or replace
PROCEDURE get_new
AS
    my_ename INTERFACE_ATTLAS.TRAFFIC_CUST_ID%TYPE;
    my_salary INTERFACE_ATTLAS.ROUTERNAME%TYPE;
    CURSOR c1 IS
    SELECT TRAFFIC_CUST_ID,ROUTERNAME
    FROM INTERFACE_ATTLAS
    WHERE rownum > 3;
BEGIN
  open c1;    
    LOOP
        FETCH c1 INTO my_ename, my_salary;
        EXIT WHEN c1%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(my_ename);
    end loop;
  close c1;
end;

Do not forget to open and close cursors. It always will print nothing because of rownum > 3; You wanted to type: rownum < 3;, didn't you?

like image 52
neshkeev Avatar answered Feb 03 '26 07:02

neshkeev