Professional Documents
Culture Documents
Cursor
Cursor
BILL NO
=
BILL DATE : Dat,
SR.NO. TEM NAME QTy UNIT _PRICE AMOUNT
1
TOTAL AMOUNT :
CCODE CUST_MASTER.CUST_CODE&TYPE:
CNAME CUST. —MASTER.CUST_NAMESZTYPE;
CaDD CUST_MASTER.CUST_ADD&TYPE:
BNO BILLBILL_NOZTYPE;
BDATE BILL BILL_DATESTYPE:
ITEM_MASTER.IT_NAMESZTYPE:
msCursors
ae ITEM_MASTER.IT_PRICE%TYPE;
a BILLTRAN.IT_QTY%TYPE;
BILL.BILL_NO®TYPE;
i NUMBER(10);
jawt. —- NUMBER(10);
NUMBER(3) := 1;
SR
cuRSOR C IS SELECT CUST_MASTER.CUST_CODE, CUST_NAME, CUST_ADD,
sL_NO, BILL_DATE FROM CUST_MASTER, BILL WHERE BILL_NO = B AND
(ist. MASTER.CUST_CODE = BILL.CUST_CODE;
nso I IS SELECT IT_NAME, IT_QTY, IT_UNIT, IT PRICE
ROM ITEM_MASTER, BILLTRAN WHERE
TEM MASTER.IT_CODE = BILLTRAN.IT_CODE AND BILL_NO = B:
BEGIN
B= &BILL_NO;
OPEN C;
LOOP
FETCH C INTO CCODE,CNAME,CADD,BNO,BDATE;
EXIT WHEN C%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘CUSTOMER:’);
DBMS_OUTPUTPUT_LINE(‘CODE: ‘ || CCODE || *
‘Il BILL No.: « || BNO);
DBMS_OUTPUTPUT_LINE(‘NAME: “|| CNAME || ¢
‘I BLL DaTE.: + || BDATE);
PBMS_OUTPUT.PUT_LINE(‘ADDRESS: + || CADD);
131
he= ee,
SQL & PL/SQL Practice Book
DBMS_OUTPUT.PUT_LINEC:
a OS
i DBMS_OUTPUTPUT_LINECSR NO. ITEM NAMB.
: UNIT PRICE AMOUNT"); Ory
DBMS_OUTPUT-PUT LINE(—
S eee
END LOOP;
CLOSE C;
AMT
TAMT
OPEN I;
LOOP
FETCH I INTO INAME,IQTY,IUNIT,IPRICE;
EXIT WHEN I%NOTFOUND;
AMT := IQTY * IPRICE;
DBMS_OUTPUT.PUT_LINE(SR || *. * || INAME |]
“Wiery ys‘ TUNIT||* ‘PRICE ||‘ + || AMT;
TAMT := TAMT + AMT;
SR := SR + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(*_________——
Ds
DBMS_OUTPUT.PUT_LINE(‘TOTAL AMOUNT : ‘ || TAMT);
CLOSE I;
END;
132a N
Cursors
oC li
‘ cursos)
ak
i wi eanptoyee code, mame, sabi and departnent name for the employees
yt
‘ - sgatany IS more
, PUTIGRR and use cursor vartabley
than the Input vate, (Use the standard EMP and DEPT
pwc ol soo!
pw ANU
BMBSALW TYPE;
§
pvp RHC IS RECORD
ane EMBEMPNOWTYPE,
PMENM | BMRENAMBS TYPE,
yaw BMRSALPYR,
DAMENM. DEPRDNAMBYTYPE);
EMIREC RECS
Using a strong ref cursor type y j
TOE TCUR IS REF CURSOR RETURN REC;
EMICUR TCR:
SAIN
Seedy
OPEN EMMCUR FOR SELECT EMPNO, ENAME, SAL, DNAME i
FROM EMP, DEPT i
WHERE EMPDEPTNO = DEPTDEPTNO
AND SAL > S;
Loop
FETCH EMPCUR INTO EMPREC;
EXIT WHEN. BMPCURGNOTFOUND:
ae
133DIMS_OL “y
DDMS_OUTPUT.PU!
DEPINM {| *
s
piiMs_OUT
DIMS_O1
END LOOP,
yMP
STUDENT (ROLL.NO, NAME, MARKSI, MARKS2, MARKS3,
JASQL, block, which calculates the percentage for exch
warks ws 100 for ea
write w
i puns
splay the detally al ve scored highest
”
ANY.S ANY
NM
MKS
vw
"
MAXI
MAK2
MAKS
™
IN
FOR RI IN CI
Loop
IF REMARKS! > 40 any RIMARKSD » gg
RKS2 > 49
AND RUMARKS3 > 49 THe,
RLMARKSI + RiMARKs? RiManKsa,
F Pls via;
ELSE
PIL = NULL;
END
UPDATE STUDENT
PERCENTAGE = 1
WHERE ROLLNO = RILROLLNO;
IP MAXI < RILMARKSI THEN
MAXI c= RLMARKSI:
END 1
IP MAX2 « RLMARKS2 THEN
MAX2 = RLMARKS2:
END IP,
IT MAX3 < RILMARKS3 THEN
MAX3 sw RLMARKSS:
END i
usa1 & PLISQI. Practice Book
TEND LOOP:
ovurtPUT_LINECSTUDENTS SECURING HIGHEST 1N
DBM! alate!
SUBJECT! ARE!)
pening ref cursor to find students who have secured
en
”
maximum in subject
JEN ANY.S FOR SELECT NAME, MARKS!
FROM STUDENT
WHERE MARKS! = MAXI;
opt
Loop
+ FETCH ANY_S INTO NM, MKS:
EXIT WHEN ANY_S%NOTFOUND;
+ DBMS_OUTPUTPUT_LINE(NM| —“IMKS);
END LOOP;
CLOSE ANY.S;
DBMS_OUTPUTPUT_LINECSTUDENTS SECURING HIGHEST IN
SUBJECT? ARE");
1 Opening a ref cursor to find students who have secured
maximum in subject? be
OPEN ANY_S FOR SELECT NAME, MARKS2
FROM STUDENT
WHERE MARKS2 = MAX2;
Loor
FETCH ANY.S INTO NM, MKS;
EXIT WHEN ANY_S%:NOTFOUNT
DOMS_OUTPUTPUT_LINE(N
MKS);
136
END LOOP;
CLOSE ANY_S:
pBMS_OUTPUTPUT_LINE(‘STUDENTs SECURING
ARE’): HIGHEST yy, sumer
pe Opening 4 ref Cursor 10 fad students yng have se
maximum in subject? ane
OPEN ANY_S FOR SELECT NAME, MaRxsa mk
FROM STUDENT
WHERE MARKS3 = MAX3;
LOOP:
FETCH ANY_S INTO NM, MK; a
EXIT WHEN ANY_S%NOTFOUND;
DBMS_OUTPUT:PUT_LINE(NMI[
END LOOP;
CLOSE ANY_S}
“IMKs
COMMIT;
END;
Write 9 PLISQL block, which takes as i
the user w.
the choice from the user, whether
mts details about the APPLICANT or details about the
RANCE_TEST and as per the choice displays the related details,
nN
PPLICANT (ALD, ANAME, ADDR, AUIRTI_DT)
RANCE_TEST (ELL, EVNAM
DECLARE
CHOICE
MAX_SCORE, CUT_SCOI
VARCHAR2(1):
TYPE ANY_CUR IS REF
Ry
aS01 FUG Pra Ba
ANY.S ANY CUR:
APPLI_REC APPLICANTSROWTYPE:,
ETEST.REC — ENTRANCE_TEST&ROWTYPE;
(User defined exception
7
WRONG _CHOICE EXCEPTION;
BEGIN
CHOICE := “&CHOICE’;
DBMS_OUTPUTPUT_LINE
DBMS_OUTPUTPUT_LINECENTER “A” FOR. APPLICANT
DETAILS AND “T" FOR ENTRANCE TEST DETAILS’):
IF UPPER(CHOICE) NOT IN CAT) THEN
RAISE WRONG_CHOICE;
END IF;
IF UPPER(CHOICE) = “A” THEN
OPEN ANY_S FOR SELECT * FROM APPLICANT;
Loor
EXIT WHEN ANY_S&NOTFOUND;
FETCH ANY_S INTO APPLI_REC;
DBMS_OUTPUT.PUT_LINE(APPLI_REC.AII
|
* |APPy =
UAPPLLREC ANAM Stare Consors
END Loop, ULREC Ay
RTH,
CLOSE ANy_s
ELSE
OPEN ANY_S FOR seLEcp « FROM ENTRAn,
Loop Grins
FETCH ANY_s INTO TEST REC;
EXIT WHEN ANY. s@NoTFOUNp,
DEMS-OUTPUTPUT._LINEGETEST REC EID
*IBTEST_RECETNAMEy
‘IETEST_RECMAX_scorey
‘IETEST_REC.CUT_scorey,
END Loop;
CLOSE ANY_s;
END IF;
EXCEPTION
WHEN WRONG_CHOICE THEN
DBMS_OUTPUT-PUT_LINECWRONG CHOICE
ENTERED);
END;nt
Arment
J tables I the prin
Primary
‘write an appropriate exception t0 handle this erry,
ey value already exists,
DEPT(DERTNO.DNAMELOC)
DECLARE
DNO DEPTDEPTNO®T
PNM DEPTDNAMES TYPE:
Le | DEPTLOC#TYPE:
DUPLICATE_PK EXCEPTION:
PRAGMA EXCEPTION INIT(DUPLICATE_PK.-00001
RI DEPTSROWTYPE:
BEGIN
DNO:=&DNO;
INSERT INTO DEPT VALUES(DNO.DNM.LC):
EXCEPTION
WHEN DUPLICATE PK THEN
defined name to a numbered exception
ibered exception can be given #
way any
150)
140
MARY KEY VALUE ALREADY BXISTS).
functions)
Write a funetion to find whethe
whether the given number
i FUNCTION SYNTAX
1s 0d oF even,
CREATE OR REPLACE FUNCTION 0 ORE (gy
RETURN BOOLEAN nee
1s
BEGIN
RETURN ( MOD(NO,2) =
END O_OR_E;
= CALLING PROGRAM
DECLARE
NUM NUMBER(4);
BEGIN
NUM :=&NUM;
IF NUM = 0 THEN
DBMS_OUTPUT.PUT_LINECNO IS ZERO");
ELsE
IF O_OR_E(NUM) THEN
DBMS_OUTPUTPUT_LINE(NO IS ODD’
ELSE,
Is BEN’:
DBMS_OUTPUTPUT_LINECNO.
ut