PL/SQL入門--複合類型及集合

 7.複合數據類型

  7.1定義PL/SQL記錄

  自定義PL/SQL記錄:需要定義PL/SQL記錄類型和記錄變量,identifier用於指定記錄變量名

  1. type type_name is record( 
  2.  
  3.       field_declaration[, 
  4.  
  5.       field_declaration]... 
  6.  
  7.  ); 
  8.  
  9.  identifier type_name; 

 

  1. declare 
  2.  
  3.   type emp_record_type is record( 
  4.  
  5.        name emp.ename%type, 
  6.  
  7.        salary em.sal%type, 
  8.  
  9.        dno emp.deptno%type); 
  10.  
  11.   emp_record emp_record_type; 

    使用%rowtype屬性定義記錄變量:可以基於表或視圖定義記錄變量

    當使用%ROWTYPE屬性定義記錄變量時,記錄成員個數,名稱,類型與表或視圖列的個數,名稱,類型完全相同.

  1. dept_record dept%rowtype; 
  2.  
  3. emp_record emp%rowtype; 

    select into 語句中使用PL/SQL 記錄

    select into 語句中使用記錄變量

  1. set serveroutput on 
  2.  
  3.    declare 
  4.  
  5.      type emp_record_type is record( 
  6.  
  7.           name emp.ename%type, 
  8.  
  9.           salary em.sal%type, 
  10.  
  11.           dno emp.deptno%type); 
  12.  
  13.      emp_record emp_record_type; 
  14.  
  15.    begin 
  16.  
  17.      select ename,sal,deptno into emp_record from emp where empno=&no; 
  18.  
  19.      dbms_output.put_line(emp_record.name); 
  20.  
  21.    end; 

    7.2select into 語句中使用記錄成員

  1. declare 
  2.  
  3.      type emp_record_type is record( 
  4.  
  5.           name emp.ename%type, 
  6.  
  7.           salary emp.sal%type, 
  8.  
  9.           dna emp.deptno%type); 
  10.  
  11.      emp_record emp_record_type; 
  12.  
  13.    begin 
  14.  
  15.      select ename,sal into emp_record.name,emp_record.salary from emp where empno=&no; 
  16.  
  17.      dbms_output.put_line(emp_record.name); 
  18.  
  19.    end; 

    7.3insert語句中使用PL/SQL記錄

    VALUES子句中使用記錄變量

   

  1. declare 
  2.  
  3.      dept_record dept%rowtype; 
  4.  
  5.    begin 
  6.  
  7.      dept_record.deptno:=50
  8.  
  9.      dept_record.dname:='administrator'
  10.  
  11.      dept_record.loc:='beijing'
  12.  
  13.      insert int dept values dept_record; 
  14.  
  15.    end;  

 

    VALUES子句中使用記錄成員

  1. declare 
  2.  
  3.       dept_record dept%rowtype; 
  4.  
  5.     begin 
  6.  
  7.       dept_record.deptno:=60
  8.  
  9.       dept_record.dname:='sales'
  10.  
  11.       insert into dept (deptno,dname) values (dept_record.deptno,dept_record.dname); 
  12.  
  13.     end; 

    7.4UPDATE語句中使用PL/SQL記錄

    SET子句中使用記錄變量

  1. declare 
  2.  
  3.     dept_record dept%rowtype; 
  4.  
  5.   begin 
  6.  
  7.     dept_record.deptno:=30
  8.  
  9.     dept_record.dnama:='sales'
  10.  
  11.     dept_record.loc:='shanghai'
  12.  
  13.     update dept set row=dept_record where deptno=30
  14.  
  15.  end; 

   SET子句中使用記錄成員

  1. declare 
  2.  
  3.     dept_record dept%rowtype; 
  4.  
  5.   begin 
  6.  
  7.     dept_record.loc:='guangzhou'
  8.  
  9.     update dept set loc=dept_record.loc where deptno=10
  10.  
  11.   end; 

   7.5DELETE語句中使用PL/SQL記錄:只能在DELETE語句中的WHERE子句中使用記錄成員

  1. declare 
  2.  
  3.     dept_record dept%rowtype; 
  4.  
  5.   begin 
  6.  
  7.     dept_record.deptno:=50
  8.  
  9.     delete from dept where deptno=dept_record.deptno; 
  10.  
  11.   end; 






感謝April-MyHou!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章