CREATE OR REPLACE PROCEDURE TEST_RECORD
AS
TYPE user_record_type IS RECORD(
id users
login_id users
name users
u_r_t user_record_type;
BEGIN
FOR recd IN (SELECT * FROM users) LOOP
SELECT id
dbms_output
END LOOP;
NULL;
END;
一
由單行多列的標量構成的復合結構
將一個或多個標量封裝成一個對象進行操作
記錄可以直接賦值
記錄不可以整體比較
記錄不可以整體判斷為空
二
請區別%ROWTYPE和記錄(Record)類型
區別在與前者結構為表結構
Record + PL/SQL表可以進行數據的多行多列存儲
三
①創建記錄類型
語法
TYPE 記錄名 IS RECORD
(
filed
filedN typen [NOT NULL] [
)
其中
②聲明記錄類型變量
記錄類型變量名 記錄類型
③填充記錄
④訪問記錄成員
記錄類型變量名
記錄類型變量名
注意
表字段類型修改後
對於記錄內每個字段(filed
好處是表字段發生變化
數據庫系統都會去查看對應表字段類型
另外如果刪除了某一字段
對數據庫負荷偏低的系統
各個環節都要考慮性能問題
語法
TYPE 記錄名 IS RECORD
(
filed
filed
filedn table
);
例子
Declare
Type EmpType is Record(
EMPNO number(
ENAME varchar
JOB varchar
SAL number(
DEPTNO number(
);
EmpRec
EmpRec
Begin
EmpRec
EmpRec
EmpRec
EmpRec
EmpRec
EmpRec
DBMS_output
End;
例子
Declare
Type EmpType is Record(
EMPNO number(
ENAME varchar
JOB varchar
SAL number(
DEPTNO number(
);
EmpRec
EmpRec
Begin
EmpRec
EmpRec
EmpRec
EmpRec
EmpRec
if EmpRec
DBMS_output
end if;
End;
例子
Declare
Type EmpType is Record(
EMPNO number(
ENAME varchar
JOB varchar
SAL number(
DEPTNO number(
);
EmpRec EmpType;
Begin
if EmpRec
DBMS_output
end if;
End;
例子
DECLARE
Type MyRecType Is Record
(
RENO EMPA
RENAME EMPA
RJOB EMPA
);
EmpRec MyRecType;
Begin
Select EMPNO
If EmpRec
DBMS_OUTPUT
End If;
End;
例子
DECLARE
Type MyRecType Is Record
(
RENO EMPA
RENAME EMPA
RJOB EMPA
);
EmpRec MyRecType;
vJob EMPA
Begin
Select EMPNO
DBMS_OUTPUT
EmpRec
DBMS_OUTPUT
Select JOB InTo vJob from empa Where empa
DBMS_OUTPUT
End;
/
四
根據表結構合理安排記錄字段
如果用記錄(RECORD)插入數據
如果用%ROWTYPE插入數據
例子
DECLARE
Type MyRecType Is Record
(
RENO EMPA
RENAME VARCHAR
RJOB EMPA
);
EmpRec MyRecType;
Begin
Select EMPNO
DBMS_OUTPUT
EmpRec
EmpRec
EmpRec
Insert InTo empa(EMPNO
Select EMPNO
DBMS_OUTPUT
End;
五
如果用記錄(RECORD)更新數據
如果用%ROWTYPE更新數據
例子
DECLARE
vEmp empa%RowType;
Begin
Select * InTo vEmp From empa Where empa
UpDate empa Set ROW = vEmp Where EMPNO =
End;
六
刪除記錄時
From:http://tw.wingwit.com/Article/program/Oracle/201311/17783.html