Skip to main content

PLSQL Programming Part 5 - CURSOR AND ITS ATTRIBUTES

/**
What is a cursor?
A cursor is a pointer that points a set of records for processing. Private SQL area is where cursor results are placed.
Implicit cursors and Explicit cursors are two types of cursors.

There are a number of ways a cursor can be declared and used based on the requirement. They are as follows:
1. Simple FOR loop cursor
2. Explicit declaration and invoking it

***/
clear screen
set serveroutput on size 100000
declare
--Cursor Declaration
cursor cur_Customer_Data
is
Select *
from cust_table;

cur_Variable cur_Customer_Data%rowtype; -- Cursor variable to hold recordset
var1 cust_table%rowtype; -- variable to hold data on FOR loop cursor
begin

dbms_output.put_line('-------------------------------------------------------------------');
dbms_output.put_line('FOR loop started at => '||to_char(sysdate,'hh:mi:ss'));
dbms_output.put_line('-------------------------------------------------------------------');
for var1 in (Select * from cust_table)
loop
dbms_output.put_line(var1.cust_id||','||var1.cust_name);
end loop;
dbms_output.put_line('-------------------------------------------------------------------');
dbms_output.put_line('FOR loop ended at => '||to_char(sysdate,'hh:mi:ss'));
dbms_output.put_line('-------------------------------------------------------------------');


dbms_output.put_line('-------------------------------------------------------------------');
dbms_output.put_line('Fetch loop started at => '||to_char(sysdate,'hh:mi:ss'));
dbms_output.put_line('-------------------------------------------------------------------');
open cur_Customer_Data;
loop
fetch cur_Customer_Data into cur_Variable;
exit when cur_Customer_Data%NOTFOUND;
dbms_output.put_line(cur_Variable.cust_id||','||cur_Variable.cust_name);
end loop;
dbms_output.put_line('-------------------------------------------------------------------');
dbms_output.put_line('Fetch loop ended at => '||to_char(sysdate,'hh:mi:ss'));
dbms_output.put_line('-------------------------------------------------------------------');

if (cur_Customer_Data%isopen)
then
dbms_output.put_line('Cursor is still open and now I am closing it!');
close cur_Customer_Data;
else
dbms_output.put_line('Cursor already closed');
end if;

end;
/

Comments

Popular posts from this blog

Editor's Column - Traditional DBMS

Editor's column There were days when Rooms-sized processors used for processing data. IT boomed up at the start of 21st Century and so many innumerable inventions made Computer world and few among them are still up in the markets for thier better implemented programming Alogrithms which couples with computer hardware and software ( OS ). Textpads or notepads were the repository of data and programmers had to be Experts to do data manipulation. In other words, Programmers had to use thier own logic to do insert , delete, update in data source. For instance, Consider the following: file1.txt: 1 I am line number 1 2 I am line number 2 3 I am line number 3 4 I am line number 4 5 I am line number 5 6 I am line number 6 7 I am line number 7 8 I am line number 8 9 I am line number 9 10 I am line number 10 To programmatically delete 8 th record , developer had to use the following logic with OLD file handling methods in 3rd generation language. 1. Open file1.txt, an...

PLSQL programming ( Learn by examples - Part 3 )

/** In this section , lets learn the following. How to use a for loop to process multiple records... **/ set serveroutput on size 100000 begin --Select objects of table type that are valid under the schema Susil for var in (Select * from all_objects where object_name not like '%$%' and object_name in ('EMPLOYEE','EMP') and status='VALID' and owner='SUSIL') loop if var.object_type='TABLE' then /* Dbms_metadata package provides us a function get_ddl to get the data definition on object. For your understanding , i have just chosen two tables in this example If you remove Object_name condition in the above SQL , it will print DDL definitions for all tables under the specified schema **/ dbms_output.put_line('====================================================================='); dbms_output.put_line('Table name =>'||var.objec...

Identify current and prev details of a customer

  create table customer_rating( id char, name char, irrating char, jcrrating char, procDate date, flag char ); insert into customer_rating values('A','D','X','Y','28-Jul-21','M'); insert into customer_rating values('A','D','M','L','27-Jul-21','M'); Select cr.id, cr.name, cr_prev.irrating pcob_rating, cr.irrating cob_rating, cr_prev.jcrrating pcob_jcr_rating, cr.jcrrating cob_jcr_rating From Customer_Rating cr join Customer_Rating cr_Prev  ON cr.procdate = '28-Jul-21' AND cr_prev.id = cr.id AND cr_prev.procdate = (  Select max(procdate) from Customer_Rating  Where id=cr.id and procdate < cr.procdate ) ;