Since 1999     References  |  Search more  | Oracle Syntax  | Free Online Oracle Problem Solver

    .Home      .Subscribe     .Login      .Start Learning      .Certification      .Cancel      .Password Reminder      .Password Change     .Sign out


. Online Accounting        .Copyright & User Agreement   |
    .Vision      .Biography     .Acknowledgement

.Contact Us      .Comments/Suggestions       .Email2aFriend    |


Online Oracle Training for beginners and advanced - The most comprehensive Oracle tutorial

The authors do not guarantee or take any responsibility for the accuracy, or completeness of the information.

Basics - PL/SQL 


Lesson 01 | Lesson 02 | Lesson 03 | Lesson 04 | Lesson 05 | Lesson 06 | Lesson 07 | Lesson 08 | Lesson 09 | Lesson 10 | Lesson 11 | Lesson 12 | Lesson 13 | Lesson 14 | Lesson 15 | Lesson 16 | Lesson 17 | Lesson 18 | Lesson 19 | Lesson 20 | Lesson 21 |


Lesson 05

￿A successful individual typically sets his next goal somewhat but not too much above his last achievement. In this way he steadily raises his level of aspiration.￿ Kurt Lewin (1890 - 1947)


Read first then play the video:

   PLS-VIDEO -Cursor Parameter

Cursor Parameter


Hand-On Introduction

In this Hands-On, you use the ￿test_for_loop2￿ file from the previous Hands-On. Then modify the PL/SQL block that the cursor only calculates the department statistics for a specific department. For example the department number 10. Save the file in the iself directory as ￿test_for_loop3.￿


Go to ￿MS-DOS.￿ Change directory to the iself directory. And login to ￿SQLPLUS￿ as ￿iself/schooling.￿ Open the notepad editor. Open the ￿test_for_loop2￿ file from the iself directory.


In the declaration section, modify the cursor to use a cursor parameter to pass the department number as an input parameter. Add a WHERE clause condition to query only the input parameter. Declare the department number variable.


Defining parameter in a PL/SQL cursor

In the execution section, assign number 10 to the department number variable. Modify the FOR LOOP statement to pass the department number as an input parameter.





    -- define department statistics

    cursor c_ds (p_deptno dept.deptno%TYPE) is

        select dname, count (*) ttemp,

                    sum(sal) ttsal, avg(sal) avsal

            from dept d, emp e

            where d.deptno = e.deptno

                and d.deptno = p_deptno

            group by dname;


    -- define deptno variable

    v_deptno NUMBER(2);



    -- assign deptno 10

    v_deptno := 10;


    -- loop to read cursor record.

    for v_ds in c_ds (v_deptno) loop


        -- insert into dept_stat

        insert into dept_stat

            values (v_ds.dname, v_ds.ttemp,

            v_ds.ttsal, v_ds.avsal);


    end loop;


    -- save the insert transaction.





Save a PL/SQL block

Save the file in the iself directory as ￿test_for_loop3￿.


Run a PL/SQL block

Go to ￿sqlplus.￿ Query the department statistics table. Then truncate the dept_stat table in the case there are records in the table.

SQL> truncate table dept_stat;


Check the output

Query the dept_stat table again.

SQL> select * from dept_stat;

No data!


Run the file.

SQL> @test_for_loop3


Query the dept_stat table.

SQL> select * from dept_stat;

Now, you see the result here!


￿Eighty percent of success is showing up.￿ Woody Allen



Q: What is the cursor parameter in the PL/SQL language?
Q: Where do you define a cursor parameter in the PL/SQL language?

Q: Write a PL/SQL block to populate the department table statistics into the ￿dept_stat￿ table for a specific department.

Statistics Information:

The Department Number,

The total number of employees in each department,

The total salary paid in each department, and

The average salary paid in each department.