Search code examples
oracle-databasevariablesstored-proceduresmultirow

Fetch MULTIPLE ROWS and STORE in 1 VARIABLE - ORACLE STORED PROCEDURE


I am working on ORACLE STORED PROCEDURES and I have a doubt. I have a query which fetches more than 1 row and I want to store all those 3 row's values in 1 Variable. Can anybody please help me with this.

My QUERY goes like this :

SELECT STUDENT_NAME FROM STUDENT.STUDENT_DETAILS WHERE CLASS_ID= 'C';

Here this query fetches 3 names

Jack, Jill, Bunny

I want all those 3 names to be stored in 1 variable i.e C_NAMES. And after that I am using that variable in further steps of my procedure.

Can anyone please help me with this.

I would highly appreciate your time and effort.

Thanks in advance,

Vrinda :)


Solution

  • CREATE PROCEDURE a_proc
    AS
        CURSOR names_cur IS
            SELECT  student_name
            FROM    student.student_details
            WHERE   class_id = 'C';
    
        names_t  names_cur%ROWTYPE;
        TYPE names_ntt IS TABLE OF names_t%TYPE; -- must use type
        l_names  names_ntt;
    BEGIN
        OPEN  names_cur;
        FETCH names_cur BULK COLLECT INTO l_names;
        CLOSE names_cur;
    
        FOR indx IN 1..l_names.COUNT LOOP
            DBMS_OUTPUT.PUT_LINE(l_names(indx).student_name);
        END LOOP;
    END a_proc;