亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle Class10. 集合和成員函數(shù)(pl/sql表和記

系統(tǒng) 2631 0

------------------------2013-5-21------------------------
定義表的類型
type tablename is table of col_def index by binary_integer;
聲明表的類型
Tablename tablename

pl/sql表
臨時(shí)使用,像數(shù)組一樣的對(duì)象。
包含一列和一個(gè)主鍵
不能對(duì)列和主鍵進(jìn)行命名
列可以是任何標(biāo)量數(shù)據(jù)類型
主鍵必須是binary_integer類型
大小沒有限制

引用:tablename(key_value)
賦值:tablename(key_value) := expression;

記錄 %rowtype來聲明記錄。

定義記錄類型
type typename is record(列定義 ...);
聲明記錄類型
recordtype typename;
引用記錄
recordtype.columnname
賦值
recordtype.columnname := expression;

pl/sql的運(yùn)行
oracle使用兩個(gè)引擎來運(yùn)行pl/sql塊和sql語句
pl/sql引擎運(yùn)行過程語句。
sql引擎運(yùn)行sql語句。

聲明嵌套表
type tablename IS TABLE OF tabletype;

嵌套表與索引表差異
嵌套表????索引表
使用sql來操縱并存儲(chǔ)在數(shù)據(jù)庫中?不可能
下標(biāo)范圍:1到2147483647??下標(biāo)范圍:-2147483647到2147483647
可用is null操作符來驗(yàn)證??不可驗(yàn)證
可用extend和trim方法??不可用

聲明可變數(shù)組
TYPE typename IS VARRAY(Maximum_size) OF element_type(not null);
-typename是可變數(shù)組名
-Maximum_size設(shè)置了元素的數(shù)目
-element_type不能為boolean,ref游標(biāo),表或者另一種可變數(shù)組類型。

-----------------------------------------------
exists(n) 第n個(gè)元素存在,返回true
count 總數(shù)
limit 最大數(shù)目
first 第一個(gè)元素???(下標(biāo)值)
last? 最后一個(gè)元素???(下標(biāo)值)
prior(x)? 第x個(gè)元素之前的元素???? ?(下標(biāo)值)
next(x)? 第x個(gè)元素之后的元素??(下標(biāo)值)
extend(x,y) 追加x個(gè)第y個(gè)元素的副本
trim(x)? 從集合的末尾處截?cái)鄕個(gè)元素
delete 刪除部分或全部元素
-----------------------------------------------

##forall應(yīng)用舉例##
-- 采用ForAll對(duì)變量進(jìn)行批量邦定,然后一次發(fā)送
declare
? type tt is table of int index by binary_integer;
? lv_tt tt;
? t1 char(5);
? t2 char(5);
? t3 char(5);
? procedure get_time(t out number)
? is
? begin
??? --取得當(dāng)前時(shí)間
???? select to_char(sysdate, 'sssss') into t from dual;
? end;
begin

? for i in 1 .. 100000
? loop
??? lv_tt(i) := i;
? end loop;
?
? get_time(t1);
?
? for i in 1 .. 100000
? loop
??? insert into ttt2 values (lv_tt(i));???
? end loop;
???
? get_time(t2);
?
? forall i in 1 .. 100000
??? insert into ttt2 values (lv_tt(i));???
?
? get_time(t3);
?
? dbms_output.put_line('未批量邦定耗時(shí):');
? dbms_output.put_line(t2 - t1);
? dbms_output.put_line('批量邦定耗時(shí):');
? dbms_output.put_line(t3 - t2);

end;


未批量邦定耗時(shí):
10
批量邦定耗時(shí):
0


##bulk collect##
declare
? -- PL/SQL表(索引表)
? type ttt is table of int index by binary_integer;
? lv_tt ttt;
begin

? select a BULK Collect into lv_tt from tt;?????? --BULK Collect

? for i in 1 .. 3
? loop
??? dbms_output.put_line(lv_tt(i));
? end loop;
???
end;


create table tt
(
a int,??? -- 自動(dòng)增長(zhǎng)/在觸發(fā)器中實(shí)現(xiàn) ???
b int
)

create or replace trigger triInsertTT
before insert
on tt
for each row
begin
? :New.a := 1;
end;


set serveroutput on;
--動(dòng)態(tài)sql
declare
i int;
begin
--execute immediate 'create table aqq(i int)';
--execute immediate 'insert into aqq values(1) ';
i := 13;
execute immediate 'insert into aqq values('|| i ||') ';????? --這樣寫才正確
--execute immediate 'insert into aqq values(i) ';??????????? --ORA-00984: 列在此處不允許
--'insert into a values (i)';??????????????????????????????? --PLS-00490: 非法語句
end;

select * from aqq;

declare
type tt is table of int index by binary_integer;
lv_t tt;
begin
? for i in 5 .. 10?? --從哪個(gè)值開始都可以。
? loop
??? lv_t(i) := i;
? end loop;
?
? for i in 5 .. 10?? --從哪個(gè)值開始都可以。
? loop
??? dbms_output.put_line(lv_t(i));
? end loop;
end;

declare
type tr is record
(
a int,
b int
);
type tt is table of tr index by binary_integer;
lv_t tt;
begin
? for i in 2 .. 10?? --從哪個(gè)值開始都可以。
? loop
??? lv_t(i).a := i * 2;
??? lv_t(i).b := i * 3;
? end loop;
?
? for i in 2 .. 10?? --從哪個(gè)值開始都可以。
? loop
??? dbms_output.put(lv_t(i).a || ' --- ');??? --輸出不換行。
??? dbms_output.put_line(lv_t(i).b);
? end loop;
end;

#type嵌套的情況#
declare
type tr1 is record
(
b int
);
type tr is record
(
a tr1
);
type tt is table of tr index by binary_integer;
lv_t tt;
begin
? for i in 4 .. 10?? --從哪個(gè)值開始都可以。
? loop
??? lv_t(i).a.b := i;
? end loop;
?
? for i in 4 .. 10?? --從哪個(gè)值開始都可以。 如果索引值不對(duì),報(bào)ORA-01403: 未找到數(shù)據(jù)。
? loop
??? dbms_output.put_line(lv_t(i).a.b);
? end loop;
end;

##存在問題??? ##
declare
type t is record
(
a int
--b varchar2(10)
);
type tt is table of t index by binary_integer;
lv_t2 tt;
begin
? select a into lv_t2 from c6;?? --bulk collect? --PLS-00597: INTO 列表中的表達(dá)式 'LV_T2'? 類型錯(cuò)誤
? for i in 1 .. lv_t2.count
? loop
??? dbms_output.put(lv_t2(i).a || ' --- ');
??? --dbms_output.put_line(lv_t2(i).b);
? end loop;
end;

##存在問題??? ##
declare
type t is record
(
a int,
b varchar2(10)
);
type tt is table of t index by binary_integer;
lv_tt tt;
begin
? select a,b bulk collect into lv_tt from c6;?? --bulk collect? --PLS-00597: INTO 列表中的表達(dá)式 'LV_T2'? 類型錯(cuò)誤
? dbms_output.put_line(lv_tt.count || '~~~~~~' );
? for i in 1 .. lv_tt.count
? loop
??? dbms_output.put(lv_tt(i).a || ' --- ');
??? dbms_output.put_line(lv_tt(i).b);
? end loop;
end;
???


declare
type tt is table of varchar2(24) index by binary_integer;
lv_tt tt;
begin
? select b bulk collect into lv_tt from c6;?? --bulk collect可以--
? dbms_output.put_line(lv_tt.count || '~~~~~~' );
? for i in 1 .. lv_tt.count
? loop
??? dbms_output.put(lv_tt(i) || ' --- ');
? end loop;
end;

--集合 記錄 對(duì)象(抽象數(shù)據(jù)類型)
declare
type address_rec is record?????????? --自定義類型
(
state varchar2(12),
city varchar2(12),
street_name varchar2(12),
street_no varchar2(4)
);
lv_address_rec address_rec;
begin
? lv_address_rec.state := 'HN';
? lv_address_rec.city := 'ZZ';
? dbms_output.put_line(lv_address_rec.state);
? dbms_output.put_line(lv_address_rec.city);
end;


--建立程序包,僅包含一個(gè)自定義數(shù)據(jù)類型。
create or replace package pkg_school
is
type address_rec is record?????????? --自定義類型
(
state varchar2(12),
city varchar2(12),
street_name varchar2(12),
street_no varchar2(4)
);
end pkg_school;

--簡(jiǎn)化以上的代碼--
declare
lv_address_rec pkg_school.address_rec;????? --使用程序包來取代
begin
? lv_address_rec.state := 'HN';
? lv_address_rec.city := 'ZZ';
? dbms_output.put_line(lv_address_rec.state);
? dbms_output.put_line(lv_address_rec.city);
end;


--創(chuàng)建學(xué)生表,使用自定義類型。
create table student
(
no char(4),
name varchar2(8),
address pkg_school.address_rec?? --報(bào)錯(cuò):ORA-00902: 無效數(shù)據(jù)類型
);


create table student10
(
no char(4),
name varchar2(8),
address address_rec5???????????? --要使用永久性對(duì)象,自定義類型才可以。
);

--添加值
insert into STUDENT10 values ('0001','ANiu',address_rec5('HN','ZZ','TL','0001'));


select no,name,address.state from STUDENT10;??? --這樣寫會(huì)報(bào)錯(cuò)。address.state? ORA-00904: 無效列名
select * from STUDENT10;
select no,name,address from STUDENT10;

#這樣寫才可以,通過別名的方式。#
select no,name,s.address.state from STUDENT10 s;


--添加,通過pl/sql方式。
declare
lv_address address_rec5;
begin
? lv_address := address_rec5('GD','ZZ','TL','0001');
? insert into STUDENT10 values ('0001','ANiu',lv_address);?? --通過變量的方式,lv_address
end;


--通過點(diǎn)分法修改address_rec5
update student10 s set s.address.state = 'HK' where s.no='0001';

--刪除
delete student10 s where s.address.state = 'HK';


--定義索引,在自定義抽象數(shù)據(jù)類型的字段上,優(yōu)化查詢性能。
create index street_name_idx on student10(address.street_name);

--查看用戶定義的索引
select index_name,index_type,table_name,table_type from user_indexes where table_name = 'STUDENT10';

?


--#這樣創(chuàng)建表會(huì)報(bào)錯(cuò)??#
declare
type address_rec is record?????????? --自定義類型
(
state varchar2(12),
city varchar2(12),
street_name varchar2(12),
street_no varchar2(4)
);
begin
? create table students
? (
? no char(4),
? name varchar2(8),
? address address_rec
? );
end;

--創(chuàng)建類型
create type address_rec4 as record?? --會(huì)報(bào)錯(cuò)? as object
(
state varchar2(12),
city varchar2(12),
street_name varchar2(12),
street_no varchar2(4)
);

declare
type address_rec4 is record? --暫態(tài)對(duì)象
(
state varchar2(12),
city varchar2(12),
street_name varchar2(12),
street_no varchar2(4)
);
begin
dbms_output.put_line('aaa');
end;


create type address_rec4 as object?? --需要寫成object,永久性對(duì)象。
(
state varchar2(12),
city varchar2(12),
street_name varchar2(12),
street_no varchar2(4)
);

--刪除自定義抽象數(shù)據(jù)類型
drop type address_rec4;
--強(qiáng)制刪除
drop type address_rec4 force;


--使用自定義類型
declare
lv_address address_rec5;
begin
lv_address := address_rec5('HN','ZZ','TL','0001');
dbms_output.put_line(lv_address.state);
dbms_output.put_line(lv_address.city);
dbms_output.put_line(lv_address.street_name);
dbms_output.put_line(lv_address.street_no);
end;

select column_name,data_type from user_tab_columns where table_name = 'student10';? --查詢不了結(jié)果。
select column_name,data_type from user_tab_columns where table_name = 'STUDENT10';? --表名要大寫才可以。

--查詢類型屬性。
select attr_name,length,attr_type_name from user_type_attrs where type_name = 'ADDRESS_REC5';

--查看對(duì)象依賴性
desc user_dependencies;

select name,type from user_dependencies where referenced_name = 'ADDRESS_REC5';


--##對(duì)象表的概念##
create table Address of address_rec5;

-- 查看
desc Address;
-- 添加
insert into Address values(address_rec5('HN','ZZ','TL','0001'));
insert into Address values('SH','PJ','XH','0005');?????????????? --也可以這樣添加值。
-- 查詢
select * from address;

--通過value函數(shù)可以將查詢結(jié)果作為一個(gè)對(duì)象的集合返回
select value(a) from address a;?? --有要求的,不是任何一個(gè)表都可以,而是要基于對(duì)象表創(chuàng)建的表才可以。

--調(diào)用
declare
s1 address_rec5;? --類型,而不是Address,否則會(huì)報(bào)錯(cuò)。
begin
select value(s) into s1 from address s where s.state = 'SH';
dbms_output.put_line(s1.state);
dbms_output.put_line(s1.city);
dbms_output.put_line(s1.street_name);
dbms_output.put_line(s1.street_no);
end;


insert into Address values(address_rec5('GD','GZ','XA','0001'));
insert into Address values(address_rec5('XX','XA','BJ','0004'));

--oid
--oracle自動(dòng)分配給對(duì)象表中每一條對(duì)象記錄的一個(gè)唯一標(biāo)示號(hào)
--通過ref來進(jìn)行調(diào)用
select ref(a) from address a;? --有幾條記錄就返回幾條a地址值.如
REF(A)
--------------------------------------------------------------------------------
00002802096D5EE0A11F2C4C828CE4DB0E4B9DBA51592BB9591600436887DFDE706F178DBC004086
E60000

00002802094F82C9267C2C4BE6B21E9851001E74B3592BB9591600436887DFDE706F178DBC004086
E60001

0000280209C955BEBAA7D04674995B5996900A6330592BB9591600436887DFDE706F178DBC004086
E60002

#OID應(yīng)用#? deref()函數(shù)? Dangling

##可變數(shù)組varray##
--可變數(shù)組
declare
-- 定義可變數(shù)組 varing array =>varray
type authors_ary is varray(5) of varchar2(12);
-- 聲明數(shù)組變量,通過構(gòu)造函數(shù)初始化
lv_authors authors_ary := authors_ary('A','B','C');
begin
? --通過索引下標(biāo)來調(diào)用
? dbms_output.put_line(lv_authors(1));
? dbms_output.put_line(lv_authors(2));
? dbms_output.put_line(lv_authors(3));
end;

-- 創(chuàng)建可變類型
create or replace type authors_ary is varray(5) of varchar2(12);

create table bs(
? bid varchar2(4),
? authors authors_ary
)

insert into bs values('001',authors_ary('A','B','C'));
insert into bs values('002',authors_ary('D','E','F'));
insert into bs values('003',authors_ary('G','H','I'));
insert into bs values('004',authors_ary('J','K','L'));


-- select * from bs;

select * from bs where bid = '001';
select b.bid,b.authors_ary(1) from bs b where bid = '001';? --這樣子是取不了的??

--構(gòu)造一個(gè)隱式的游標(biāo)
begin
? for lv_book_rec in (select * from bs)
? loop
??? --dbms_output.put( ' ---- ');
??? dbms_output.put_line (lv_book_rec.bid || '========');
??? for lv_index in 1 .. lv_book_rec.authors.count
??? loop
????? dbms_output.put(lv_book_rec.authors(lv_index));??????? --這樣子是可以取的。
??? end loop;
??? dbms_output.put_line ( '========');
? end loop;
end;

?


-- 可變數(shù)組的函數(shù)
declare
lv_authors authors_ary := authors_ary('A','B','C');
begin
? dbms_output.put_line('Limit:' || lv_authors.limit);??? --定義的數(shù)組大小
? dbms_output.put_line('Count:' || lv_authors.count);
? if lv_authors.exists(1) then
??? dbms_output.put_line(lv_authors(1));
? end if;
? dbms_output.put_line(lv_authors(2));
? dbms_output.put_line(lv_authors(3));
? if lv_authors.exists(4) then
??? dbms_output.put_line(lv_authors(4));
? else
??? dbms_output.put_line('沒有第4項(xiàng)');
? end if;
end;

Limit:5
Count:3
A
B
C
沒有第4項(xiàng)

PL/SQL 過程已成功完成。

#完善以上代碼,加了大小超出報(bào)錯(cuò)異常及通過extend添加新項(xiàng)#
declare
lv_authors authors_ary := authors_ary('A','B','C');
begin
? dbms_output.put_line('Limit:' || lv_authors.limit);??? --定義的數(shù)組大小
? dbms_output.put_line('Count:' || lv_authors.count);
? if lv_authors.exists(1) then
??? dbms_output.put_line(lv_authors(1));
? end if;
? dbms_output.put_line(lv_authors(2));
? dbms_output.put_line(lv_authors(3));
? lv_authors.extend;??????????????????????????? --擴(kuò)充,延伸。
? lv_authors(4) := 'DDD';
? --通過extend添加新項(xiàng)。
? lv_authors.extend;????--lv_authors.extend(1); 與 lv_authors.extend; 等效。
??????--lv_authors.extend(1,1); 第一個(gè)參數(shù)表示在4的基礎(chǔ)上新加一個(gè),第二個(gè)參數(shù)表示引用原來數(shù)組里面的第一個(gè)值。整體作為第5個(gè)元素。
? lv_authors(5) := 'e';
? --lv_authors.extend;
? --lv_authors(6) := 'f';
? --lv_authors(6) := 'f';?????????????????????? --ORA-06533: 下標(biāo)超出數(shù)量
? if lv_authors.exists(4) then
??? dbms_output.put_line(lv_authors(4));
? else
??? dbms_output.put_line('沒有第4項(xiàng)');
? end if;
? if lv_authors.exists(5) then
??? dbms_output.put_line(lv_authors(5));
? else
??? dbms_output.put_line('沒有第5項(xiàng)');
? end if;
end;

?

--循環(huán)可變數(shù)組的函數(shù)
declare
lv_authors authors_ary := authors_ary('A','B','C');
begin
? for lv_index in 1 .. lv_authors.count
? loop
??? dbms_output.put_line(lv_index);
? end loop;
end;


##隱式游標(biāo)##
begin
?for lv_Title_type in (select cid, cname from class6)
?loop
? dbms_output.put_line ('========');
? --dbms_output.put_line (lv_Title_type.cid);
? --dbms_output.put_line (lv_Title_type.cname);
?end loop;
?-- 關(guān)閉游標(biāo)
end;
---------ORACLE6.1.txt


Oracle集合分為兩類
-- 可變數(shù)組大小 type type_name is varray(limit) of datatype not null
特點(diǎn):固定大小,數(shù)據(jù)連續(xù)存儲(chǔ)。
-- 嵌套表 type table_name is table of data_type
特點(diǎn):可變大小,數(shù)據(jù)松散存儲(chǔ)。


declare
type typ_authors is varray(3) of varchar2(12);??? --容量大小是varray后面的值,而不是數(shù)據(jù)類型varchar2(12)?
-- 調(diào)用構(gòu)造函數(shù)初始化
au_ary typ_authors := typ_authors();
begin
? if au_ary is null then
??? dbms_output.put_line('au_ary is null!');??? --打印
? else
??? dbms_output.put_line('au_ary is not null!');
? end if;

? dbms_output.put_line('Limit: ' || au_ary.limit);? --3
? dbms_output.put_line('Count: ' || au_ary.count);? --0
? au_ary.extend;
? au_ary(1) := 'A';
? au_ary.extend;
? au_ary(2) := 'B';
? dbms_output.put_line(au_ary(1));? --A
? dbms_output.put_line(au_ary(2));? --B
? -- 通過Extend添加新項(xiàng)
? au_ary.extend;
? au_ary(3) := 'C';
? dbms_output.put_line(au_ary(3));? --C
? dbms_output.put_line('Limit: ' || au_ary.limit);? --3
? dbms_output.put_line('Count: ' || au_ary.count);? --3
? au_ary.trim(1);? --截掉最后一個(gè)元素
? dbms_output.put_line('Limit: ' || au_ary.limit);? --3
? dbms_output.put_line('Count: ' || au_ary.count);? --2
? if au_ary.exists(3) then
??? dbms_output.put_line('au_ary(3) 存在!');
? else
??? dbms_output.put_line('au_ary(3) 不存在!');???? --打印
? end if;
? dbms_output.put_line('1 -- > Next: ' || au_ary.Next(1)); --B? 輸出為2?
? dbms_output.put_line('Last: ' || au_ary.Last);?????????? --B? 輸出為2?
end;

#通過以下實(shí)例發(fā)現(xiàn):lv_authors.Next(1),lv_authors.Last返回的都是下標(biāo)值。#
declare
lv_authors authors_ary := authors_ary('A','B','C');
begin
? dbms_output.put_line('Limit:' || lv_authors.limit);??? --定義的數(shù)組大小
? dbms_output.put_line('Count:' || lv_authors.count);
? if lv_authors.exists(1) then
??? dbms_output.put_line(lv_authors(1));
? end if;
? dbms_output.put_line(lv_authors(2));
? dbms_output.put_line(lv_authors(3));
?
? dbms_output.put_line('First: ' || lv_authors.First);??????????
? dbms_output.put_line('First: ' || lv_authors(lv_authors.First));??
?
? --dbms_output.put_line('1 -- > Prior: ' || lv_authors.prior(1));???????????? --ORA-06502: PL/SQL: 數(shù)字或值錯(cuò)誤 :? NULL 索引表鍵值
? --dbms_output.put_line('1 -- > Prior: ' || lv_authors(lv_authors.prior(1)));
?
? dbms_output.put_line('1 -- > Prior: ' || lv_authors.prior(2));
? dbms_output.put_line('1 -- > Prior: ' || lv_authors(lv_authors.prior(2)));
?
? dbms_output.put_line('1 -- > Next: ' || lv_authors.Next(1));
? dbms_output.put_line('1 -- > Next: ' || lv_authors(lv_authors.Next(1)));
?
? dbms_output.put_line('Last: ' || lv_authors.Last);??????????
? dbms_output.put_line('Last: ' || lv_authors(lv_authors.Last));??????
end;

#嵌套表#
declare
type student_typ_tbl is table of varchar2(12);
stu_tbl student_typ_tbl;
j number;
begin
? if stu_tbl is null then
??? dbms_output.put_line('stu_tbl is null!');? --打印
??? stu_tbl := student_typ_tbl();????????????? --初始化
? else
??? dbms_output.put_line('stu_tbl is not null!');
? end if;
? dbms_output.put_line('Limit: ' || stu_tbl.limit); --沒有值
? dbms_output.put_line('Count: ' || stu_tbl.count); --0
? for i in 1 .. 10
? loop
??? stu_tbl.extend;??? --附加值
??? stu_tbl(i) := i;
? end loop;
? stu_tbl.delete(1);?? --刪除元素1
? stu_tbl.delete(4);?? --刪除元素4
? --for i in 1 .. 10
? --for i in 1 .. stu_tbl.count
? --for i in 1 .. stu_tbl.last
? j := stu_tbl.first;
? for i in 1 .. stu_tbl.count
? loop
??? --if stu_tbl.exists(i) then
??? --? dbms_output.put_line('stu_tbl(' || i || '): ' || stu_tbl(i));
??? --end if;
??? dbms_output.put_line('stu_tbl(' || j || '): ' || stu_tbl(j));
??? j := stu_tbl.next(j);
? end loop;
? dbms_output.put_line('Limit: ' || stu_tbl.limit); --沒有值
? dbms_output.put_line('Count: ' || stu_tbl.count); --8
end;


--索引表
declare
type teachers_type_tbl is table of varchar2(12) index by binary_integer;
teacher_tbl teachers_type_tbl;
begin
? teacher_tbl(1) := 'A';
? teacher_tbl(9) := 'B';
? dbms_output.put_line(teacher_tbl(1));
? dbms_output.put_line(teacher_tbl(9));
end;


##對(duì)象命名規(guī)范和對(duì)象體##
create or replace type rectangle is object
(
width number(5,2),
height number(5,2),
map member function area return number?? --需要定義成map或者是order(編譯報(bào)錯(cuò)?),對(duì)象間才可以比較大小。
);

create or replace type body rectangle is

? map member function area
? return number
? is
? begin
??? return (width * height);
? end area;

end;

--調(diào)用
declare
lv_rect rectangle := rectangle(10,10);
begin
??? DBMS_OUTPUT.Put_Line( 'lv_rect.area' );?
??? DBMS_OUTPUT.Put_Line( lv_rect.area );?
end;

--添加了map之后,才可以比較大小,否則會(huì)報(bào)錯(cuò)。
declare
lv_rect1 rectangle := rectangle(10, 10);
lv_rect2 rectangle := rectangle(20, 20);
begin
? if lv_rect1 > lv_rect2 then
??? DBMS_OUTPUT.Put_Line( '1 > 2' );?
? else
??? DBMS_OUTPUT.Put_Line( '1 < 2' );?
? end if;
end;

##order方式## 注意function區(qū)別
--類型規(guī)范
create or replace type rectangle is object
(
width number(5,2),
height number(5,2),
order member function area(r rectangle) return int
);
--類型體
create or replace type body rectangle is

? order member function area(r rectangle)
? return int
? is
? begin
??? case
??? when (width * height) < (r.width * r.height) then return -1;
??? when (width * height) > (r.width * r.height) then return 1;
??? when (width * height) = (r.width * r.height) then return 0;
??? end case;
? end area;

end;


-- 實(shí)例????????? 對(duì)象規(guī)范和對(duì)象體。???
-- 堆棧(stack)

http://hi.baidu.com/no20win/item/7a97825a4e2ef0a3acc857af ?

Oracle Class10. 集合和成員函數(shù)(pl/sql表和記錄,嵌套表和可變數(shù)組,成員函數(shù)和過程)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产尤物在线播放 | 亚洲精品美女久久久aaa | 欧美色视频超清在线观看 | 夜间福利在线观看 | 久久只精品 | 国内一区二区 | 精品哟哟哟国产在线观看不卡 | 天天操夜夜欢 | 成人不卡视频 | 国产在线播放一区 | 国产精品免费一区二区三区四区 | 狠狠操在线观看 | 91精品国产爱久久久久 | 黑人超长巨大xxxxxxx视频 | 在线播放国产一区二区三区 | 久久亚洲私人国产精品va | 97久久精品国产精品青草 | 久久精品美女视频 | 国产目拍亚洲精品一区二区三区 | 亚洲精品成人中文网 | 国产自愉怕一区二区三区 | 免费亚洲视频 | 在线观看国产精美视频 | 免费香蕉一区二区在线观看 | 久久久久久久尹人综合网亚洲 | 老子影院午夜伦手机在线看 | 久久精品国产亚洲欧美 | 波多野结衣中文丝袜字幕 | 亚洲综合图片小说区热久久 | 久久精品观看影院2828 | 亚洲精品欧美精品日韩精品 | 日韩毛片在线看 | 91激情视频| 久久综合免费视频 | 午夜国产福利在线观看 | 国产青色 | 视频一区在线免费观看 | 成人看片免费无限观看视频 | 九九51精品国产免费看 | 精品免费tv久久久久久久 | 99热免费在线观看 |