DECLARING STRUCTURED RECORD VARIABLES DECLARE TYPE MY_REC_TYPE IS RECORD (NUMBER INTEGER, NAME VARCHAR2(20)); R1 MY_REC_TYPE; R2 MY_REC_TYPE; BEGIN R1.NUMBER :=123; R1.NAME := 'MARY'; R2 :=R1; DBMS_OUTPUT.PUT_LINE('NUMBER = '|| R2.NUMBER || ' NAME = '||R2.NAME); END; / SAMPLE CURSOR USE declare cursor c1 is select customer_number, last, city from customer; c1_rec c1%rowtype; begin if not c1%isopen then open c1; end if; fetch c1 into c1_rec; while c1%found loop dbms_output.put_line('Row number '||c1%rowcount|| '> '||c1_rec.customer_number||' '||c1_rec.last|| ' '||c1_rec.city); fetch c1 into c1_rec; end loop; close c1; end; / ANONYMOUS PROCEDURE declare cnum customer.customer_number%type; total number(10,2); status boolean; function total_cust_sales(cno in customer.customer_number%type) return number is balance number; begin select sum(quoted_price*number_ordered) into balance from orders, order_line, customer where orders.order_number= order_line.order_number and customer.customer_number = orders.customer_number and customer.customer_number = cno; return (balance); end; begin cnum := 124 ; total := total_cust_sales(cnum); dbms_output.put_line('Total balance for customer '|| cnum|| ' is '||total); end; /