Showing posts with label TYPES OF CURSORS. Show all posts
Showing posts with label TYPES OF CURSORS. Show all posts

Wednesday, May 11, 2022

Cuesors and Types of Cursors

 CURSORS IN PLSQL WITH SIMPLE                                         EXAMPLES


-----------------------------CURSORS--------------------------
 
 CURSOR :
  
-->> WHENEVER A SQL AUERY WHICH RETRIVES MORE THAN  ONE ROW , TO PROCESS THOSE RECORDS/ROWS WE USE CURSORS.
  >>CONTEXT AREA OF MEMORY WHERE QUERY RECORDS ARE SAVED.
 
 
 -----------
 
 DECLARE
 V_EMPNO EMPL.EMPNO%TYPE;
 V_SAL   EMPL.SAL%TYPE;
 V_HIREDATE EMPL.HIREDATE%TYPE;
 BEGIN
 SELECT EMPNO,SAL,HIREDATE 
 INTO V_EMPNO,V_SAL,V_HIREDATE --ONLY ONE ROW
 FROM EMPL
 WHERE  ROWNUM<10;
 

 DBMS_OUTPUT.PUT_LINE('ID  OF       EMPLOYE IS :'||V_EMPNO);
 DBMS_OUTPUT.PUT_LINE('SALARY  OF   EMPLOYE IS :'||V_SAL);
 DBMS_OUTPUT.PUT_LINE('HIREDATE  OF EMPLOYE IS :'||V_HIREDATE);
 END;
 
 -----------------------
 
  --TYPES OF CUSRSORS
    1. IMPLICIT CURSORS: >> SYSTEM DEFINED
    2. EXPLICIT CURSORS  >> USER DEFINED 
    
    
  -------------------  
 
 
DECLARE
  CURSOR C IS    SELECT *  FROM EMPL;
BEGIN
  FOR I IN c
  LOOP
    dbms_output.put_line('EMPLOYEE NAME IS :  '||i.ename || ' ::EMPLOYEE ID IS :'|| I.EMPNO ||' ::SALARY IS : '||I.SAL);
  END LOOP;
END;
/

 
 
 
 -------------------------------
 
 
 
 
DECLARE
CURSOR EMP_CUR IS SELECT ENAME, EMPNO FROM EMPL; --DECLARE
V_CUR EMP_CUR%ROWTYPE;
BEGIN
 OPEN EMP_CUR;  --2. OPEN THE CURSORS
 FETCH EMP_CUR INTO V_CUR;
 LOOP 
 EXIT WHEN EMP_CUR%NOTFOUND 
 DBMS_OUTPUT.PUT_LINE('EMPLOYEE NAME IS : ' || V_CUR.ENAME || ':: EMP ID IS : '||V_CUR.EMPNO );
 END LOOP;
 END;
 
 
 /
 
 DECLARE
  CURSOR c  IS    SELECT ename FROM empl; --DECLARE
  vname c%rowtype;
BEGIN
  OPEN c; --2. OPEN THE CURSORS
  loop
    fetch c INTO vname; -- FETCH CURSOR 
    exit  WHEN c%notfound; 
    dbms_output.put_line(vname.ename);
  END loop;
  CLOSE C;          --4. CLOSE CURSOR
END;
/


--CURSOR FOR LOOPS:
--OPEN , FETCH  AND CLOSE THE CURSR INTERNALLY...
--WE NEED NOT INITIALIZE VARIABLE AS WELL.


 --WAY001
 DECLARE
  CURSOR c
  IS
    SELECT ename FROM empl;
  Vname c%rowtype;
BEGIN
  OPEN c;
  LOOP
    FETCH c INTO vname;
    EXIT
  WHEN c%notfound;
    Dbms_output.put_line(vname.ename);
  END LOOP;
END;
/


--WAY _002
  DECLARE
  CURSOR c  IS    SELECT ename FROM empl; --DECLARE 
BEGIN  
  FOR I IN  C LOOP
  DBMS_OUTPUT.PUT_LINE('NAME OF EMPLOYEE IS :'||I.ENAME);
  END LOOP;
  
END;

--WAY _003
 
BEGIN  
  FOR I IN ( SELECT ename FROM empl) LOOP
  DBMS_OUTPUT.PUT_LINE('NAME OF EMPLOYEE IS :'||I.ENAME);
  END LOOP;
  
END;
  
 / 
 --WAY001
 DECLARE
  CURSOR c
  IS
    SELECT ename FROM empl;
  Vname c%rowtype;
BEGIN
  OPEN c;
  LOOP
    FETCH c INTO vname;
    EXIT
  WHEN c%notfound;
    Dbms_output.put_line(vname.ename);
  END LOOP;
END;
/

 ----------------------------------------------PARAMETERISED CURSORS:-------------------------------
 
 
 ----------------------------------------------PARAMETERISED CURSORS:-------------------------------
 
 A CURSOR WHICH CAN ACCEPT THE PARAMETER IS CALLED AS PARAMETERISED CURSOR.
 
  E.G 
  
  
  DECLARE
  CURSOR c (X NUMBER,V_ENAME VARCHAR2)  IS    SELECT HIREDATE,SAL  FROM empl WHERE EMPNO = X AND ENAME = V_ENAME; --DECLARE 
  VAR_1 NUMBER;
  VAR_2 VARCHAR2(100);
BEGIN  
 VAR_1 := &a;
 VAR_2 := &B;
 
  FOR I IN  C (VAR_1 , VAR_2) LOOP
  DBMS_OUTPUT.PUT_LINE('HIREDATE  OF EMPLOYEE IS :'||I.HIREDATE);
  DBMS_OUTPUT.PUT_LINE('SALARY  OF EMPLOYEE IS :'||I.SAL);
  END LOOP;
  
END;

/


query to get Shipment number based on Order number

 SELECT DISTINCT     wnd.delivery_name,     wnd.actual_ship_date,     wdd.sales_order_number FROM     wsh_new_deliveries       wnd,     wsh_...

Popular Posts