Oracle數(shù)據(jù)庫自定義類型type的用法詳解
Oracle 基本概念
1. Oracle 數(shù)據(jù)庫
Oracle 數(shù)據(jù)庫是數(shù)據(jù)的物理存儲。這就包括(數(shù)據(jù)文件 ORA 或者 DBF、控制文件、聯(lián)機(jī)日志、參數(shù)文件)。其實(shí) Oracle 數(shù)據(jù)庫的概念和其它數(shù)據(jù)庫不一樣,這里的數(shù)據(jù)庫是一個操作系統(tǒng)只有一個庫??梢钥醋魇?Oracle 就只有一個大數(shù)據(jù)庫
2. 實(shí)例
一個Oracle實(shí)例(Oracle Instance)有一系列的后臺進(jìn)程(Backguound Processes)和內(nèi)存結(jié)構(gòu)(Memory Structures)組成。一個數(shù)據(jù)庫可以有 n 個實(shí)例。
3. 數(shù)據(jù)文件(dbf)
數(shù)據(jù)文件是數(shù)據(jù)庫的物理存儲單位。數(shù)據(jù)庫的數(shù)據(jù)是存儲在表空間中的,真正是在某一個或者多個數(shù)據(jù)文件中。而一個表空間可以由一個或多個數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只能屬于一個表空間。一旦數(shù)據(jù)文件被加入到某個表空間后,就不能刪除這個文件,如果要刪除某個數(shù)據(jù)文件,只能刪除其所屬于的表空間才行。
4. 表空間
表空間是 Oracle 對物理數(shù)據(jù)庫上相關(guān)數(shù)據(jù)文件(ORA 或者 DBF 文件)的邏輯映射。一個數(shù)據(jù)庫在邏輯上被劃分成一到若干個表空間,每個表空間包含了在邏輯上相關(guān)聯(lián)的一組結(jié)構(gòu)。每個數(shù)據(jù)庫至少有一個表空間(稱之為 system 表空間)。
每個表空間由同一磁盤上的一個或多個文件組成,這些文件叫數(shù)據(jù)文件(datafile)。一個數(shù)據(jù)文件只能屬于一個表空間。
emp表數(shù)據(jù)如下所示

定義object類型
create or replace type typeof_userinfo_row as object( user_id varchar2(50), user_name varchar2(50) )
創(chuàng)建函數(shù)并將此類型作為返回值類型
create or replace function FUN_TEST return typeof_userinfo_row is FunctionResult typeof_userinfo_row; begin FunctionResult:=typeof_userinfo_row(null,null); --將單條數(shù)據(jù)值插入到自定義類型的變量中 SELECT e.empno,e.ename INTO FunctionResult.user_id,FunctionResult.user_name FROM emp e where e.empno = '7499'; RETURN(FunctionResult); end FUN_TEST;
調(diào)用該函數(shù),并打印執(zhí)行結(jié)果
declare res typeof_userinfo_row; begin res := FUN_TEST(); dbms_output.put_line(res.user_id || ' ' || res.user_name); end;
執(zhí)行結(jié)果

定義table類型
create or replace type typeof_userinfo_table is table of typeof_userinfo_row
創(chuàng)建函數(shù)并將此類型作為返回值類型
create or replace function FUN_TEST1 return typeof_userinfo_table is FunctionResult typeof_userinfo_table; begin --將多條記錄的值同時插入到自定義類型的變量中 SELECT typeof_userinfo_row(empno,ename) BULK COLLECT INTO FunctionResult FROM emp e; RETURN(FunctionResult); end FUN_TEST1;
調(diào)用該函數(shù),并打印執(zhí)行結(jié)果
declare res typeof_userinfo_table; i NUMBER := 1; begin res := FUN_TEST1(); WHILE i <= res.LAST LOOP DBMS_OUTPUT.PUT_LINE(res(i).user_id || ' ' ||res(i).user_name); i := i + 1; END LOOP; end;
執(zhí)行結(jié)果

到此這篇關(guān)于Oracle數(shù)據(jù)庫自定義類型type的用法詳解的文章就介紹到這了,更多相關(guān)Oracle的type內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫中的LISTAGG函數(shù)使用示例及注意事項(xiàng)
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中LISTAGG函數(shù)使用示例及注意事項(xiàng)的相關(guān)資料,listagg函數(shù)是Oracle?11.2推出的新特性,其主要功能類似于wmsys.wm_concat函數(shù),即將數(shù)據(jù)分組后把指定列的數(shù)據(jù)再通過指定符號合并,需要的朋友可以參考下2024-08-08
Kettle連接Oracle數(shù)據(jù)庫方法((Oracle19c&Oracle11g))
這篇文章主要介紹了Kettle連接Oracle數(shù)據(jù)庫方法((Oracle19c&Oracle11g)),包括oracle驅(qū)動jar包,連接oracle的過程,思路很簡單需要的朋友可以參考下2022-11-11
Oracle 子程序參數(shù)模式,IN,OUT,NOCOPY
Oracle 子程序參數(shù)模式主要有IN,OUT,NOCOPY,IN和OUT可以組合,OUT和NOCOPY也可以組合使用.2009-10-10
Oracle 數(shù)據(jù)庫優(yōu)化實(shí)戰(zhàn)心得總結(jié)
優(yōu)化sql語句、優(yōu)化io、表設(shè)計(jì)優(yōu)化、充分利用系統(tǒng)cpu資源、優(yōu)化數(shù)據(jù)庫連接、充分利用數(shù)據(jù)的后臺處理方案減少網(wǎng)絡(luò)流量,實(shí)施系統(tǒng)資源管理分配計(jì)劃等等,感興趣的朋友可以參考下哈2013-06-06
oracle 查詢當(dāng)天數(shù)據(jù)的sql條件寫法
這篇文章主要介紹了oracle 查詢當(dāng)天數(shù)據(jù)的sql條件寫法,需要的朋友可以參考下2017-04-04
inner join和left join之間的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于inner join和left join之間區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Oracle數(shù)據(jù)庫表名支持的最大長度是多少
這篇文章主要介紹了Oracle數(shù)據(jù)庫表名支持的最大長度,本文通過Oracle標(biāo)識符確認(rèn)了表名的最大支持字符串為30個字符,需要的朋友可以參考下2014-08-08
win7安裝oracle10g 提示程序異常終止 發(fā)生未知錯誤
本文將詳細(xì)介紹oracle 10g 在win7下安裝提示程序異常終止,發(fā)生未知錯誤的解決方法,需要的朋友可以參考下2012-12-12

