%type概念:
為了使乙個變數的資料型別與另乙個已經定義了的變數(尤其是表的某一列)的資料型別相一致,oracle提供了%type定義方式。當被參照的那個變數的資料型別改變了之後,這個新定義的變數的資料型別會自動跟隨其改變,容易保持一致,也不用修改pl/sql程式了。當不能確切地知道被參照的那個變數的資料型別時,就只能採用這種方法定義變數的資料型別。
使用%type特性的優點在於:
%rowtype概念:
如果乙個表有較多的列,使用%rowtype來定義乙個表示表中一行記錄的變數,比分別使用%type來定義表示表中各個列的變數要簡潔得多,並且不容易遺漏、出錯。這樣會增加程式的可維護性。
為了使乙個變數的資料型別與乙個表中記錄的各個列的資料型別相對應、一致,oracle提供%rowtype定義方式。當表的某些列的資料型別改變了之後,這個新定義的變數的資料型別會自動跟隨其改變,容易保持一致,也不用修改pl/sql程式了。當不能確切地知道被參照的那個表的結構及其資料型別時,就只能採用這種方法定義變數的資料型別。
一行記錄可以儲存從乙個表或游標中查詢到的整個資料行的各列資料。一行記錄的各個列與表中一行的各個列有相同的名稱和資料型別。
使用%rowtype特性的優點在於:
--學生結構表
create
table student
(id int
notnull, --學生主鍵id
name varchar2(50),--學生名稱
*** int --學生性別 0='男'
1='女'
);--學生資訊
insert
into student(id, name, ***) values(1, 'mike',0);
insert
into student(id, name, ***) values(2, 'vancy',1);
--%type例項1,簡單寫法
declare
v_name student.name%type; --與name型別相同
v_*** student.***%type; --與***型別相同
begin
select t.name,t.*** into v_name,v_***
from student t
where t.id = &id;
dbms_output.put_line('學生姓名:' || v_name);
dbms_output.put_line('學生性別:' || v_***);
end;
--%type例項2,結合type自定義型別使用
declare
--定義乙個記錄型別
type stuinfo_record is record(
v_name student.name%type, --與name型別相同
v_*** student.***%type --與***型別相同
);--宣告自定義記錄型別變數
v_stuinfo_record stuinfo_record;
begin
select t.name,t.*** into v_stuinfo_record
from student t
where t.id = &id;
dbms_output.put_line('學生姓名:' || v_stuinfo_record.v_name);
dbms_output.put_line('學生性別:' || v_stuinfo_record.v_***);
end;
--%rowtype例項
declare
v_student student%rowtype; --與student表中的各個列相同
begin
select * into v_student
from student t
where t.id=&id;
dbms_output.put_line('學生id:' || v_student.id);
dbms_output.put_line('學生姓名:' || v_student.name);
dbms_output.put_line('學生性別:' || v_student.***);
end;
type和 rowtype 的區別
type 屬性的一種方式是在變數宣告中使用。type是用於取得 表或游標中的字段型別,例如,可以使用它來宣告artist表中字段型別相同的變數,注意可以在表中名和字段之間使用點號 dealare v unit name kwmis xm unit bg.unit name type v bgoid ...
ORACLE中 TYPE和 ROWTYPE的使用
為了使乙個變數的資料型別與另乙個已經定義了的變數 尤其是表的某一列 的資料型別相一致,oracle 提供了 type 定義方式。當被參照的那個變數的資料型別改變了之後,這個新定義的變數的資料型別會自動跟隨其改變,容易保持一致,也不用修改 pl sql 程式了。當不能確切地知道被參照的那個變數的資料型...
Oracle中 type和 rowtype的區別
在定義變數時處理可以使用oracle規定的資料型別外,還可以使用 type和 rowtype來定義變數.type型別的變數是專門為儲存在資料列中檢索到的值而建立的.對於使用 type建立的變數,其資料型別由系統根據檢索的資料列的資料型別決定.rowtype型別的變數,它可以一次儲存從資料庫檢索的一行...