oracle建立型別之object
產品表product:
drop table product;
create table product (product_id number(18) primary key, product_name varchar2(255), expire_date date, remark varchar2(255), product_fee_id number(18));
對應產品的費用表是product_fee:
drop table product_fee;
create table product_fee(product_fee_id number(18) primary key, fee number(10));
其中product.product_fee_id與product_fee.product_fee_id是多對一的關係,即一個費用可以由多個產品共享,也就是說可能存在多個產品費用是一樣的情況。
建立一個型別,用於返回產品名稱和產品費用(透過一個object來實現):
create or replace type rcd_productinfo is object(product_name varchar2(255), product_fee);
構造資料:
insert into product_fee
select rownum, trunc(dbms_random.value(1,100)) from dual connect by rownum <= 39
insert into product
select rownum, dbms_random.string('X', 10),
sysdate + sign(dbms_random.value(1,100) - 5)*dbms_random.value(1,100), dbms_random.string('X', 20),
trunc(dbms_random.value(1,39))
from dual connect by rownum <= 1000
建立函式:
create or replace function w_func_getprodfee(product_id number)
return rcd_productinfo as
vr_pinfo rcd_productinfo := rcd_productinfo(null,0);
begin
select pr.product_name, pf.fee from product pr, product_fee pf
into vr_pinfo.product_name, vr_pinfo.product_fee
where pf.product_id = pr.product_id;
return vr_pinfo;
end w_func_getprodfee;
呼叫函式:
可以直接呼叫一起顯示,如:
select w_func_getprodfee(pr.product_id) from product pr;
也可以分開顯示:
select w_func_getprodfee(pr.product_id).product_name,
w_func_getprodfee(pr.product_fee).product_fee
from product pr;
體現了這種型別的兩種用法。
Connected to Oracle Database 10g Release 10.2.0.1.0
Connected as lyon
SQL>
SQL> select pr.product_id,
2 w_func_getprodfee(pr.product_id).product_name name,
3 w_func_getprodfee(pr.product_id).product_fee fee
4 from product pr
5 ;
PRODUCT_ID NAME FEE
------------------- -------------------------------------------------------------------------------- -------------------
1 5XACBY5N9W 77
2 XT1S8ZVFKQ 29
3 KHUBRI25AP 80
4 NA8WP815EE 66
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-571247/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 引用型別之Object型別Object
- 引用型別之 Object(三)型別Object
- JavaScript引用型別-Object型別JavaScript型別Object
- 附件之建立objectObject
- Oracle型別的建立及使用Oracle型別
- js資料型別--objectJS資料型別Object
- 在ASP中讀取ORACLE中的BLOB型別的欄位的值,不用Oracle Object for Object (轉)Oracle型別Object
- TypeScript 中令人迷惑的物件型別:Object、{} 和 objectTypeScript物件型別Object
- JS物件導向Object型別JS物件Object型別
- JavaScript中的Object的引用型別JavaScriptObject型別
- java中判斷Object物件型別JavaObject物件型別
- javascript Object型別物件簡單介紹JavaScriptObject型別物件
- Oracle中object_id和data_object_id的區別OracleObject
- HashSet新增操作底層判讀(Object型別)Object型別
- pandas中字串object 轉化 datetime 型別字串Object型別
- Js比較對Object型別進行排序JSObject型別排序
- elasticsearch的object型別和動態對映ElasticsearchObject型別
- ORACLE日期型別Oracle型別
- UnrealEngine建立自定義資產型別Unreal型別
- 建立NFS型別的儲存NFS型別
- 建立多種型別的流型別
- 【SQL】Oracle建立CLOB型別上傳下載讀取檔案SQLOracle型別
- Java中建立泛型型別的例項Java泛型型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- Oracle Long型別轉換為Clob型別Oracle型別
- Mysql 資料型別之整數型別MySQL 資料型別
- 【C#之值型別vs引用型別】C#型別
- 【MySQL資料型別3之--字元型別】MySql資料型別字元
- ORACLE物件型別表Oracle物件型別
- Oracle 儲存型別Oracle型別
- Oracle資料型別Oracle資料型別
- Oracle 資料型別Oracle資料型別
- 【TAF】使用Oracle RAC的TAF技術之SESSION型別OracleSession型別
- Java之建立物件>6.Eliminate obsolete object referencesJava物件Object
- 建立自定義塊 - 型別檢查型別
- C#支援將json中的多種型別反序列化為object型別C#JSON型別Object
- TS系列之型別型別
- 操作型別之字串型別字串