PLSQL記錄類似語言中的結構struct,友善于處理單行多列資料,PLSQL記錄是由一組相關的記錄成員Field組成,記錄就像是一個鏡像,使用的話基本上就兩種類型:
一、自定義的也就是自定義Field及類型,這種一般滿足于單行多列不是全部的列 這種可以定義的記錄類型可以在複合記錄類型中使用,
TYPE EMP_RECORD_TYPE1 IS RECORD(自定義的Field
V_NAME VARCHAR2(20),
V_SAL NUMBER(6,3)
);
EMP_RECORD1 EMP_RECORD_TYPE1;
TYPE EMP_RECORD_TYPE2 IS RECORD(用原表的Field 這種在複合資料類型中不可
V_NAME EMP.ENAME%TYPE,
V_SAL EMP.SAL%TYPE
EMP_RECORD2 EMP_RECORD_TYPE2;
自定義的一般用在不是全表的列的時候
DECLARE
TYPE EMP_RECORD_TYPE2 IS RECORD(用原表的Field
EMP_RECORD EMP_RECORD_TYPE2;
BEGIN
SELECT ENAME,SAL INTO EMP_RECORD FROM EMP;
DBMS_OUTPUT.PUT_LINE(EMP_RECORD.V_NAME);
END;
二、通過%ROWTYPE屬性可以基于表或者試圖定義記錄變量,此定義的記錄變量,成員名與類型均與原表一模一樣,如果隻是單純的處理某幾列,那麼應該使用自定義的記錄類型和變量。
IDENTIFIER TABLE_NAME%rowtype;
IDENTIFIER VIEW_NAME%rowtype;
dept_record dept%ROWTYPE;
emp_record emp%ROWTYPE;
declare
type emp_cursor is select * from emp;
emp_record emp_cursor%ROWTYPE;
begin
open emp_cursor ;
loop
fetch emp_cursor into emp_record;
exit when emp_cursor%NOTFOUND;
dbms_output.put_line(emp_record.ename||emp_record.sal);
end loop;
close emp_cursor;
end;
三、如何将記錄類型轉換為對象類型
要知道PLSQL對象類型是需要建立的 as database object type;
create or replace type recordName_record as object
( column varchar2,
cloumu2 varchar2)
還可以做為object body使用
create or replace type body indiv_record as
constructor function indiv_record
column varchar2)
return self as result is
self.column :=indiv_record.column;...
...
return;
----------------------------
define a variable of the record type;
recordNmaeobject recordName_record;
construct an intsance of the object type,
nameObject :=indiv_record(4);
以上就是定義了一個對象類型recordName_record 與 indiv_record對象定義了一個主體函數
本文轉自 aklaus 51CTO部落格,原文連結:http://blog.51cto.com/aklaus/1953390