1. % type 用法,提取% type所在字段的类型
declare myid dept.deptno % type; myname dept.dname % type;begin select deptno, dname into myid, myname from dept where deptno = 10; dbms_output.put_line(myid); dbms_output.put_line(myname);end;2. % rowtype 用法,提取% rowtype所在字段的类型 declare type type_dept is table of dept % rowtype index by binary_integer; tb type_dept;begin tb(1).deptno:='001'; tb(2).deptno:='002'; dbms_output.put_line(tb.COUNT);end;/3. TYPE用法,相当于结构体 declare lv_order_date DATE:=sysdate; lv_last_tr varchar2(5) default '001'; lv_last varchar2(10) not null:='us'; TYPE type_test is record( myid dept.deptno % type, myname dept.dname % type ); rec type_test;begin dbms_output.put_line(lv_last); select deptno, dname into rec from dept where deptno=10; dbms_output.put_line(rec.myid); dbms_output.put_line(rec.myname);end;/4. 游标的使用 declare g_id number(2) := 20; find_not char(1) := 'N'; cursor cur is select * from dept; TYPE type_dept is record( myid dept.deptno % type, myname dept.dname % type, myaddr dept.loc % type ); rect type_dept;begin open cur; loop fetch cur into rect; exit when cur% NOTFOUND; if rect.myid = g_id then dbms_output.put_line('Find it!!'); dbms_output.put_line('DEPT NO: ' || rect.myid); dbms_output.put_line('DNAME: ' || rect.myname); dbms_output.put_line('LOC: ' || rect.myaddr); end if; end loop; close cur; if find_not = 'N' then dbms_output.put_line('No Record'); end if;end;/5. for循环begin
for i in 1..5 loop dbms_output.put_line(i); end loop;end;/6. loop循环 declare v number := 1;begin loop exit when v > 5; dbms_output.put_line(v); v := v+1; end loop;end;/ 7. while循环 declare v number := 1;begin while v <= 5 loop dbms_output.put_line(v); v := v+1; end loop;end;/