1. 程式人生 > >Oracle PL/SQL表、記錄類型

Oracle PL/SQL表、記錄類型

記錄 內容 屬性方法 oracl col first integer 自定義 tab

一、PL/SQL表
pl/sql表只有兩列,其中第一列為序號列為INTEGER類型,第二列為用戶自定義列。
定義:
  TYPE <類型名> IS TABLE OF <列的類型> [NOT NULL] INDEX BY BINARY_INTEGER;
<列的類型>可以為Oracle的數據類行以及用戶自定義類型。

屬性方法:
  .count --返回pl/sql表的總行數
  .delect --刪除pl/sql表的所有內容
  .delect(行數) --刪除pl/sql表的指定的行
  .delct(開始行,結束行) --刪除pl/sql表的多行
  .first --返回表的第一個INDEX;
  .next(行數) --這個行數的下一條的INDEX;
  .last --返回表的最後一個INDEX;



二、PL/SQL記錄
pl/sql表只有一行,但是有多列。
定義:
  TYPE

<類型名> IS RECORD <列名1 類型1,列名2 類型2,...列名n 類型n,> [NOT NULL]
<列的類型>可以為Oracle的數據類行以及用戶自定義類型;可以是記錄類型的嵌套。



三、結合使用PL/SQL表和PL/SQL記錄
示例:

DECLARE
  CURSOR c_1 is select empno,ename,job,sal from emp;
  TYPE myrecord IS RECORD(empno emp.empno%type,ename emp.ename%type,job emp.job%type,sal emp.sal%type);--定義一個名為myrecoed的PL/sql記錄類型;
  TYPE mytable
IS TABLE OF
myrecord index by binary_integer; --
定義一個名為mytable的PL/sql表類型;字段類型為PL/sql記錄類型; n number:=1; tab_1 mytable; --為mytable類型實例化一個tab_1對象; BEGIN --賦值 for i in c_1 loop tab_1(n).empno:=i.empno; tab_1(n).ename:=i.ename; tab_1(n).job:
=i.job; tab_1(n).sal:=i.sal; n:=n+1; end loop; n:=1; --輸出 for i in n..tab_1.count loop dbms_output.put_line(i|| ||tab_1(i).empno|| ||tab_1(i).ename|| ||tab_1(i).job|| ||tab_1(i).sal); end loop; END;



Oracle PL/SQL表、記錄類型