Records
Records
11g
Records
Records
Record
• Composite
Datatype
Type of Record
• Table Base
• Cursor Base
• User Defined
Records
Type of Record
• Records can
refer to all
columns of the
database
table.
• RowType in
used in Oracle
to create
table-based
records
Records
Implementing
Table-based
Records - I
Records
declare
emp_rec emp%rowtype;
begin
select * into emp_rec from emp where
empno=7369;
dbms_output.put_line (emp_rec.ename || '
' || emp_rec.job);
exception
when no_data_found then
dbms_output.put_line('No matching
record found');
end;
Records
Implementing
Table-based
Records - II
Records
DECLARE
emp_rec emp%ROWTYPE;
BEGIN
emp_rec.empno := 500;
emp_rec.ename := 'Special';
emp_rec.ename := 'Consultant';
emp_rec.mgr := 7369;
emp_rec.hiredate := sysdate;
emp_rec.sal := 2000;
emp_rec.comm := NULL;
emp_rec.deptno := 10;
Records
INSERT
INTO emp
VALUES emp_rec;
dbms_output.put_line('Record base
insertion is done');
END;
Records
Cursor-based
Records
• It can refer to
all columns of
the cursor
defined .
• RowType in
used in Oracle
to create
Cursor based
records
Records
Implementing
Cursor -based
Records - I
Records
Implementing
Cursor -based
Records - II
Records
declare
cursor c1 is select empno,ename,dname
from emp e, dept d where
e.deptno=d.deptno;
c2 c1%rowtype;
begin
open c1;
loop
fetch c1 into c2;
if c2.dname='SALES' then
update emp set sal = sal*0.20 + sal
where empno=c2.empno;
Records
Syntax of User
Defined Record
Records
Step# 1:
Step # 2:
• With UDR
programmer is
able to define
its own
structure
• Multiple
variables of
same UDR can
Records
Implementing
User Defined
Record - I
Records
loop
fetch c1 into emp_rec_val;
dbms_output.put_line
(emp_rec_val.ename ||
emp_rec_val.sal );
exit when c1%rowcount > 5;
end loop;
end;
Records
Implementing
User Defined
Record - II
Records
declare
type emp_rec is RECORD (empno
emp.empno%type, ename
emp.ename%type, sal emp.ename
%type);
emp_rec_val emp_rec;
cursor c1 is select empno, ename,
sal from emp where job like
('%MAN%');
begin
open c1;
Records
loop
fetch c1 into emp_rec_val.empno,
emp_rec_val.ename,emp_rec_val.sal;
if emp_rec_val.ename ='BLAKE' then
insert into history values
(emp_rec_val.empno,
emp_rec_val.ename,sysdate());
dbms_output.put_line ('Data Added in
history table' );
end if ;
exit when c1%rowcount > 5;
end loop;
end;