欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

DM類數(shù)據(jù)類型贊怎么使用-創(chuàng)新互聯(lián)

這篇文章主要講解了“DM類數(shù)據(jù)類型贊怎么使用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“DM類數(shù)據(jù)類型贊怎么使用”吧!

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)新華,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

類類型
DM7通過類類型在DMSQL程序中實現(xiàn)面向?qū)ο缶幊痰闹С帧n悓⒔Y(jié)構(gòu)化的數(shù)據(jù)及對其進行操作的過程或函數(shù)封裝在一起。允許用戶根據(jù)現(xiàn)實世界的對象建模,而不必再將其抽象成關(guān)系數(shù)據(jù)。

DM7的類類型分為普通類類型和JAVA CLASS類型。DM文檔中的示例除了特別聲明使用的是JAVA CLASS類型,要不然使用的都是普通類類型。

普通CLASS類型
DM7的類的定義分為類頭和類體兩部分,類頭完成類的聲明;類體完成類的實現(xiàn)。類中可以包括以下內(nèi)容:
1. 類型定義
在類中可以定義游標、異常、記錄類型、數(shù)組類型、以及內(nèi)存索引表等數(shù)據(jù)類型,在類的聲明及實現(xiàn)中可以使用這些數(shù)據(jù)類型;類的聲明中不能聲明游標和異常,但是實現(xiàn)中可以定義和使用。
2. 屬性
類中的成員變量,數(shù)據(jù)類型可以是標準的數(shù)據(jù)類型,可以是在類中自定義的特殊數(shù)據(jù)類型。
3. 成員方法
類中的函數(shù)或過程,在類頭中進行聲明;其實現(xiàn)在類體中完成;
成員方法及后文的構(gòu)造函數(shù)包含一個隱含參數(shù),即自身對象,在方法實現(xiàn)中可以通過this或self來訪問自身對象,self等價于this。如果不存在重名問題,也可以直接使用對象的屬性和方法。this和self只能在包或?qū)ο竽_本中調(diào)用。

4. 構(gòu)造函數(shù)
構(gòu)造函數(shù)是類內(nèi)定義及實現(xiàn)的一種特殊的函數(shù),這類函數(shù)用于實例化類的對象,構(gòu)造函數(shù)滿足以下條件:
1) 函數(shù)名和類名相同;
2) 函數(shù)返回值類型為自身類。
構(gòu)造函數(shù)存在以下的約束:
1) 系統(tǒng)為每個類提供兩個默認的構(gòu)造函數(shù),分別為0參的構(gòu)造函數(shù)和全參的構(gòu)造函數(shù);
2) 0參構(gòu)造函數(shù)的參數(shù)個數(shù)為0,實例的對象內(nèi)所有的屬性初始化值為NULL;
3) 全參構(gòu)造函數(shù)的參數(shù)個數(shù)及類型和類內(nèi)屬性的個數(shù)及屬性相同,按照屬性的順序依次讀取參數(shù)的值并給屬性賦值;
4) 用戶可以自定義構(gòu)造函數(shù),一個類可以有多個構(gòu)造函數(shù),但每個構(gòu)造函數(shù)的參數(shù)個數(shù)必須不同;
5) 如果用戶自定義了0個參數(shù)、或參數(shù)個數(shù)同屬性個數(shù)相同的構(gòu)造函數(shù),則會覆蓋相應(yīng)的默認構(gòu)造函數(shù)。

下面從類的聲明、類的實現(xiàn)、類的刪除、類體的刪除和類的使用幾部分來詳細介紹類類型的實現(xiàn)過程。
類的聲明在類頭中完成。類頭定義通過CREATE CLASS語句來完成,其語法為:
語法格式
CREATE [OR REPLACE] CLASS [< 模式名>.]< 類名> [WITH ENCRYPTION] [UNDER [< 模式名>.]< 父類名>] [[NOT] FINAL] [[NOT]
INSTANTIABLE] [AUTHID DEFINER | AUTHID CURRENT_USER] AS|IS < 類內(nèi)聲明列表> END [類名]
< 類內(nèi)聲明列表> ::= < 類內(nèi)聲明>;{< 類內(nèi)聲明>;}
< 類內(nèi)聲明> ::= < 變量定義>|< 過程定義>|< 函數(shù)定義>|< 類型聲名>
< 變量定義> ::= < 變量名列表> < 數(shù)據(jù)類型> [默認值定義]
< 過程定義> ::= [< 方法繼承屬性>][STATIC|MEMBER] PROCEDURE < 過程名> < 參數(shù)列表>
< 函數(shù)定義> ::= [< 方法繼承屬性>] [MAP] [STATIC|MEMBER] FUNCTION < 函數(shù)名>< 參數(shù)列表> RETURN < 返回值數(shù)據(jù)類型>[DETERMINISTIC]
[PIPELINED]
< 方法繼承屬性> ::= < 重載屬性> | | < 重載屬性>
< 重載屬性> ::= [NOT] OVERRDING
::= FINAL | NOT FINAL | INSTANTIABLE | NOT INSTANTIABLE
< 類型聲名> ::= TYPE < 類型名稱> IS < 數(shù)據(jù)類型>

使用說明
1.類中元素可以以任意順序出現(xiàn),其中的對象必須在引用之前被聲明;
2.過程和函數(shù)的聲明都是前向聲明,類聲明中不包括任何實現(xiàn)代碼;
3.支持對象靜態(tài)方法聲明與調(diào)用。可以在PROCEDURE/FUNCTION關(guān)鍵字前添加static保留字,以此指明方法為靜態(tài)方法。靜態(tài)方法只能以對象名為前綴調(diào)用,而不能在對象實例中調(diào)用;
4.支持對象成員方法聲明與調(diào)用。可以在PROCEDURE/FUNCTION關(guān)鍵字前添加MEMBER以指明方法為成員方法。MEMBER與STATIC不能同時使用,非STATIC類型的非構(gòu)造函數(shù)方法默認為成員方法。MAP表示將對象類型的實例映射為標量數(shù)值,只能用于成員類型的FUNCTION;
5.關(guān)于類繼承,有以下使用限制:
1) 類定義默認為FINAL,表示該對象類型不能被繼承,定義父類時必須指定NOT FINAL選項;
2) 定義子類時必須指定UNDER選項;
3) NOT INSTANTIABLE對象不能為FINAL;
4) NOT INSTANTIABLE對象不能實例化,但是可以用其子類賦值;
5) 對象實例化時,必須對父類和子類的成員變量都賦值,且從父類到子類逐個賦值;
6) 不支持對象的循環(huán)繼承;
7) 不支持對象的多繼承,即一個類有多個父類;
6) 不支持對象的循環(huán)繼承;
7) 不支持對象的多繼承,即一個類有多個父類;
8) 不支持父類和子類包含同名變量;
9) 父類和子類可以同名同參,此時子類必須指定OVERRIDING;
10) 方法默認為NOT OVERRIDING,OVERRIDING不能與static一起使用;
11) 父類和子類支持同名不同參(參數(shù)個數(shù)不同、參數(shù)個數(shù)相同但類型不同)的方法;
12) 同名且參數(shù)個數(shù)相同但類型不同時,根據(jù)參數(shù)類型選擇使用的方法;
13) 方法默認為INSTANTIABLE,如果聲明為NOT INSTANTIABLE,則不能與FINAL、STATIC一起使用;
14) 如果父類有多個NOT INSTANTIABLE方法,子類可以只部分重寫,但此時子類必須定義為NOT FINAL NOT INSTANTIABLE;
15) NOT INSTANTIABLE方法不能具有主體;
16) 方法默認為NOT FINAL,如果聲明為FINAL,則不能被子類重寫;
17) 子類可以賦值給父類;
18) 如果父類對應(yīng)的實例是子類或者子類的孩子,則該父類可以賦值給子類;
19) 可以用INSTANTIABLE子類對NOT INSTANTIABLE父類進行賦值;
20) 子類實例賦值給父類后,調(diào)用時使用的是父類方法而不是子類方法;
21) 支持使用as語句轉(zhuǎn)換為父類。

所需權(quán)限
1、使用該語句的用戶必須是DBA或具有CREATE CLASS數(shù)據(jù)庫權(quán)限的用戶;
2、可以用關(guān)鍵字AUTHID DEFINER |AUTHID CURRENT_USER指定類的調(diào)用者權(quán)限,若為DEFINER,則采用類定義者權(quán)限,若為CURRENT_USER則為當前用戶權(quán)限,默認為類定義者權(quán)限。

類的實現(xiàn)通過類體完成。類體的定義通過CREATE CLASS BODY語句來完成,其語法為:
語法格式
CREATE [OR REPLACE] CLASS BODY [< 模式名>.]< 類名> [WITH ENCRYPTION] AS|IS < 類體部分> END [類名]
< 類體部分> ::= < 過程/函數(shù)列表> [< 初始化代碼>]
< 過程/函數(shù)列表> ::= < 過程實現(xiàn)|函數(shù)實現(xiàn)>{,< 過程實現(xiàn)|函數(shù)實現(xiàn)> }
< 過程實現(xiàn)> ::= [< 方法繼承屬性>][STATIC|MEMBER]PROCEDURE < 過程名> < 參數(shù)列表> AS|IS BEGIN < 實現(xiàn)體> END [過程名]
< 函數(shù)實現(xiàn)> ::= [< 方法繼承屬性>][MAP] [STATIC|MEMBER]FUNCTION < 函數(shù)名>< 參數(shù)列表> RETURN < 返回值數(shù)據(jù)類型>[DETERMINISTIC] [PIPELINED] AS|IS BEGIN < 實現(xiàn)體> END [函數(shù)名]
< 方法繼承屬性> ::= < 重載屬性> | | < 重載屬性>
< 重載屬性> ::= [NOT] OVERRDING
::= FINAL | NOT FINAL | INSTANTIABLE | NOT INSTANTIABLE
< 初始化代碼> ::= [[< 說明部分>]BEGIN< 執(zhí)行部分>[< 異常處理部分>]]
< 說明部分> ::=[DECLARE]< 說明定義>{< 說明定義>}
< 說明定義>::=< 變量說明>|< 異常變量說明>|< 游標定義>|< 子過程定義>|< 子函數(shù)定義>
< 變量說明>::=< 變量名>{,< 變量名>}< 變量類型>[DEFAULT|ASSIGN|:=< 表達式>];
< 變量類型>::=|< [模式名.]表名.列名%TYPE>|< [模式名.]表名%ROWTYPE>|< 記錄類型>
< 記錄類型>::= RECORD(< 變量名> {,< 變量名> })
< 異常變量說明>::=< 異常變量名>EXCEPTION[FOR< 錯誤號>]
< 異常處理語句>::= WHEN < 異常名> THEN < SQL過程語句序列>

使用說明
1. 類聲明中定義的對象對于類體而言都是可見的,不需要聲明就可以直接引用。這些對象包括變量、游標、異常定義和類型定義;
2. 類體中的過程、函數(shù)定義必須和類聲明中的聲明完全相同。包括過程的名字、參數(shù)定義列表的參數(shù)名和數(shù)據(jù)類型定義;
3. 類中可以有重名的成員方法,要求其參數(shù)定義列表各不相同。系統(tǒng)會根據(jù)用戶的調(diào)用情況進行重載(OVERLOAD);
4. 聲明類與實現(xiàn)類時,對于確定性函數(shù)的指定邏輯與包內(nèi)函數(shù)相同。目前不支持類的確定性函數(shù)在函數(shù)索引中使用。

所需權(quán)限
使用該語句的用戶必須是DBA或該類對象的擁有者且具有CREATE CLASS數(shù)據(jù)庫權(quán)限的用戶。
完整的類頭、類體的創(chuàng)建如下所示:
----類頭創(chuàng)建

SQL> create or replace class mycls
2   as
3   type rec_type is record (c1 int, c2 int); --類型聲明
4   id int; --成員變量
5   r rec_type; --成員變量
6   function f1(a int, b int) return rec_type; --成員函數(shù)
7   function mycls(id int , r_c1 int, r_c2 int) return mycls;
8   --用戶自定義構(gòu)造函數(shù)
9   end;
10  /
executed successfully
used time: 14.032(ms). Execute id is 106.

----類體創(chuàng)建

SQL> create or replace class body mycls
2   as
3    function f1(a int, b int) return rec_type
4    as
5    begin
6     r.c1 = a;
7     r.c2 = b;
8     return r;
9    end;
10   function mycls(id int, r_c1 int, r_c2 int) return mycls
11   as
12   begin
13    this.id = id; --可以使用this.來訪問自身的成員
14    r.c1 = r_c1; --this也可以省略
15    r.c2 = r_c2;
16    return this; --使用return this 返回本對象
17   end;
18  end;
19  /
executed successfully
used time: 61.783(ms). Execute id is 107.

重編譯類
重新對類進行編譯,如果重新編譯失敗,則將類置為禁止狀態(tài)。
重編功能主要用于檢驗類的正確性。
語法格式
ALTER CLASS [< 模式名>.]< 類名> COMPILE [DEBUG];

參數(shù)
1.< 模式名> 指明被重編譯的類所屬的模式;
2.< 類名> 指明被重編譯的類的名字;
3.[DEBUG] 可忽略。

所需權(quán)限
執(zhí)行該操作的用戶必須是類的創(chuàng)建者,或者具有DBA權(quán)限。
舉例說明
例如重新編譯類

SQL> ALTER CLASS mycls COMPILE;
executed successfully
used time: 8.867(ms). Execute id is 108.

刪除類
類的刪除分為兩種方式:一是類頭的刪除,刪除類頭則會順帶將類體一起刪除;另外一種是類體的刪除,這種方式只能刪除類體,類頭依然
存在。

刪除類頭
類的刪除通過DROP CLASS完成,即類頭的刪除。刪除類頭的同時會一并刪除類體。
語法格式
DROP CLASS [< 模式名>.]< 類名>[RESTRICT | CASCADE]; 使用說明
1.如果被刪除的類不屬于當前模式,必須在語句中指明模式名;
2.如果一個類的聲明被刪除,那么對應(yīng)的類體被自動刪除。

所需權(quán)限
執(zhí)行該操作的用戶必須是該類的擁有者,或者具有DBA權(quán)限。

刪除類體
從數(shù)據(jù)庫中刪除一個類的實現(xiàn)主體對象。
語法格式
DROP CLASS BODY [< 模式名>.]< 類名>[RESTRICT | CASCADE]; 使用說明
如果被刪除的類不屬于當前模式,必須在語句中指明模式名。
權(quán)限
執(zhí)行該操作的用戶必須是該類的擁有者,或者具有DBA權(quán)限。

類的使用
類類型同普通的數(shù)據(jù)類型一樣,可以作為表中列的數(shù)據(jù)類型,DMSQL程序語句塊中變量的數(shù)據(jù)類型或過程及函數(shù)參數(shù)的數(shù)據(jù)類型。

具體使用規(guī)則
1.作為表中列類型或其他類成員變量屬性的類不能被修改,刪除時需要指定CASCADE級聯(lián)刪除類中定義的數(shù)據(jù)類型,其名稱只在類的聲明及實現(xiàn)中有效。如果類內(nèi)的函數(shù)的參數(shù)或返回值是類內(nèi)的數(shù)據(jù)類型,或是進行類內(nèi)成員變量的復(fù)制,需要在DMSQL程序中定義一個結(jié)構(gòu)與之相同的類型。

根據(jù)類使用方式的不同,對象可分為變量對象及列對象。變量對象指的是在DMSQL程序語句塊中聲明的類類型的變量;列對象指的是在表中類類型的列。變量對象可以修改其屬性的值而列對象不能。

2.變量對象的實例化
類的實例化通過NEW 表達式調(diào)用構(gòu)造函數(shù)完成。
3.變量對象的引用
通過‘=’進行的類類型變量之間的賦值所進行的是對象的引用,并沒有復(fù)制一個新的對象。

4.變量對象屬性訪問
可以通過如下方式進行屬性的訪問。
< 對象名>.< 屬性名>
5.變量對象成員方法調(diào)用
成員方法的調(diào)用通過以下方式調(diào)用:
< 對象名>.< 成員方法名>(< 參數(shù)>{,< 參數(shù)>})
如果函數(shù)內(nèi)修改了對象內(nèi)屬性的值,則該修改生效。
6.列對象的插入
列對象的創(chuàng)建是通過INSERT語句向表中插入數(shù)據(jù)完成,插入語句中的值是變量對象,插入后存儲在表中的數(shù)據(jù)即為列對象。
7.列對象的復(fù)制
存儲在表中的對象不允許對對象中成員變量的修改,通過into查詢或’=’進行的列到變量的賦值所進行的是對象的賦值,生成了一個與列對象數(shù)據(jù)一樣的副本,在該副本上進行的修改不會影響表中列對象的值。
8.列對象的屬性訪問
通過如下方式進行屬性的訪問:
< 列名>.< 屬性名>
9.列對象的方法調(diào)用
< 列名>.< 成員方法名>(< 參數(shù)>{,< 參數(shù)>})
列對象方法調(diào)用過程中對類型內(nèi)屬性的修改,都是在列對象的副本上進行的,不會影響列對象的值。

應(yīng)用實例
1. 變量對象的應(yīng)用實例

SQL> declare
2     type ex_rec_t is record (a int, b int); --使用一個同結(jié)構(gòu)的類型代替類定義的類型
3     rec ex_rec_t;
4     o1 mycls;
5     o2 mycls;
6   begin
7     o1 = new mycls(1,2,3);
8     o2 = o1; --對象引用
9     rec = o2.r; --變量對象的成員變量訪問
10    print rec.a; print rec.b;
11    rec = o1.f1(4,5); --成員函數(shù)調(diào)用
12    print rec.a; print rec.b;
13    print o1.id; --成員變量訪問
14  end;
15  /
2
3
4
5
1
DMSQL executed successfully
used time: 3.129(ms). Execute id is 109.

2. 列對象的應(yīng)用實例
表的創(chuàng)建。

SQL> create table tt1(c1 int, c2 mycls);
executed successfully
used time: 28.302(ms). Execute id is 112.

列對象的創(chuàng)建--插入數(shù)據(jù)。

SQL> insert into tt1 values(1, mycls(1,2,3));
affect rows 1
used time: 22.639(ms). Execute id is 113.
SQL> commit;
executed successfully
used time: 17.285(ms). Execute id is 114.

列對象的復(fù)制及訪問。

SQL> declare
2     o mycls;
3     id int;
4   begin
5     select top 1 c2 into o from tt1; --列對象的復(fù)制
6     select top 1 c2.id into id from tt1; --列對象成員的訪問
7   end;
8   /
DMSQL executed successfully
used time: 33.518(ms). Execute id is 115.

3. 類繼承的應(yīng)用實例

SQL> CREATE OR REPLACE CLASS cls01 NOT FINAL IS
2     name VARCHAR2(10);
3     MEMBER FUNCTION get_info RETURN VARCHAR2;
4   END;
5   /
executed successfully
used time: 22.220(ms). Execute id is 116.
SQL> CREATE OR REPLACE CLASS cls02 UNDER cls01 IS
2     ID INT;
3     OVERRIDING MEMBER FUNCTION get_info RETURN VARCHAR2;
4   END;
5   /
executed successfully
used time: 14.072(ms). Execute id is 117.

JAVA CLASS類型
JAVA類的定義類似JAVA語言語法,類中可定義。
JAVA類中可以包括以下內(nèi)容:
1. 類型定義
在類中可以定義游標、異常,可以聲明記錄類型、數(shù)組類型、結(jié)構(gòu)體類型以及內(nèi)存索引表等數(shù)據(jù)類型變量。
2. 屬性
類中的成員變量,數(shù)據(jù)類型可以是標準的數(shù)據(jù)類型,可以是在類外自定義的特殊數(shù)據(jù)類型。
3. 成員方法
JAVA類中的成員方法及后文的構(gòu)造函數(shù)包含一個隱含參數(shù),即自身對象,在方法實現(xiàn)中可以通過this或self來訪問自身對象,self等價于this。如果不存在重名問題,也可以直接使用對象的屬性和方法。
4. 構(gòu)造函數(shù)
構(gòu)造函數(shù)是類內(nèi)定義及實現(xiàn)的一種特殊的函數(shù),這類函數(shù)用于實例化類的對象,構(gòu)造函數(shù)滿足以下條件:
1) 函數(shù)名和類名相同;
2) 函數(shù)沒有返回值類型。
構(gòu)造函數(shù)存在以下的約束:
1) 系統(tǒng)為每個類提供兩個默認的構(gòu)造函數(shù),分別為0參的構(gòu)造函數(shù)和全參的構(gòu)造函數(shù);
2) 0參構(gòu)造函數(shù)的參數(shù)個數(shù)為0,實例的對象內(nèi)所有的屬性初始化值為NULL;
3) 全參構(gòu)造函數(shù)的參數(shù)個數(shù)及類型和類內(nèi)屬性的個數(shù)及屬性相同,按照屬性的順序依次讀取參數(shù)的值并給屬性賦值;
4) 用戶可以自定義構(gòu)造函數(shù),一個類可以有多個構(gòu)造函數(shù),但每個構(gòu)造函數(shù)的參數(shù)個數(shù)必須不同;
5) 如果用戶自定義了0個參數(shù)、或參數(shù)個數(shù)同屬性個數(shù)相同的構(gòu)造函數(shù),則會覆蓋相應(yīng)的默認構(gòu)造函數(shù)。

定義JAVA類
定義通過CREATE JAVA CLASS語句來完成,其語法為:
語法格式
CREATE [OR REPLACE] JAVA [PUBLIC] [ABSTRACT] [FINAL] CLASS < 類名> [EXTENDS [< 模式名>.]< 父類名>] {< 類內(nèi)定義部分> }
< 類內(nèi)定義部分> ::= < 類內(nèi)定義列表>
< 類內(nèi)定義列表> ::= < 類內(nèi)定義>;{< 類內(nèi)定義>;}
< 類內(nèi)定義> ::= [PUBLIC|PRIVATE] < 變量定義>|< 方法定義>
< 變量定義> ::= < 變量屬性> < 數(shù)據(jù)類型>< 變量名列表> [默認值定義]
< 變量屬性> ::= [STATIC]
< 方法定義> ::= [PUBLIC|PRIVATE] [< 方法繼承屬性>] [STATIC] < 返回類型> < 函數(shù)名>< 參數(shù)列表> { < 實現(xiàn)體> }
< 方法繼承屬性> ::= < 重載屬性> | |
::= ABSTRACT
::= FINAL
< 重載屬性> ::= OVERRIDE

使用說明
1.類中元素可以以任意順序出現(xiàn),其中的對象必須在引用之前被聲明。
2.支持對象靜態(tài)方法聲明與調(diào)用。可以在方法前添加static保留字,以此指明方法為靜態(tài)方法。靜態(tài)方法只能以對象名為前綴調(diào)用,而不能在對象實例中調(diào)用。
3.支持對象成員方法聲明與調(diào)用。非STATIC類型的非構(gòu)造函數(shù)方法默認為成員方法。成員方法調(diào)用時,需要先實例化,實例化參數(shù)值缺省為null。
4. 變量定義還包括游標、異常定義。
5.方法屬性是PUBLIC,則訪問類時可以訪問,如果是PRIVATE屬性,則訪問類時不可以訪問該方法。
6.關(guān)于JAVA 類繼承,有以下使用限制:
1) JAVA CLASS定義默認可繼承,F(xiàn)INAL表示該類不能被繼承;
2) 定義子類時必須指定EXTENDS選項;
3) ABSTRACT對象不能為FINAL;
4) ABSTRACT對象不能實例化,但是可以用其子類賦值;
5) 子類對象實例化時,必須對父類和子類的成員變量都賦值,且從父類到子類逐個賦值;
6) 不支持對象的循環(huán)繼承;
7) 不支持對象的多繼承,即一個類只能有一個父類;
8) 不支持父類和子類包含同名變量;
9) 父類和子類可以同名同參,此時子類必須指定OVERRIDE;
10) 方法默認為NOT OVERRIDING,OVERRIDING不能與static一起使用;
11) 父類和子類支持同名不同參(參數(shù)個數(shù)不同、參數(shù)個數(shù)相同但類型不同)的方法;
12) 同名且參數(shù)個數(shù)相同但類型不同時,根據(jù)參數(shù)類型選擇使用的方法;
13) 方法如果聲明為ABSTRACT,則不能與FINAL、STATIC一起使用;
14) 如果父類有多個ABSTRACT方法,子類可以只部分重寫,但此時子類必須定義為ABSTRACT;
15) ABSTRACT方法不能具有主體;
16) 方法默認為可繼承,如果聲明為FINAL,則不能被子類重寫;
17) 子類可以賦值給父類;
18) 如果父類對應(yīng)的實例是子類或者子類的孩子,則該父類可以賦值給子類;
19) 可以用ABSTRACT子類對非ABSTRACT父類進行賦值;
20) 子類實例賦值給父類后,調(diào)用時使用的是父類方法而不是子類方法;
21) 支持使用super無參方法轉(zhuǎn)換為父類引用;
22) 支持使用this()調(diào)用該類構(gòu)造函數(shù),super()調(diào)用父類構(gòu)造函數(shù);
23) 子類必須有新增成員或方法,不能完全為空。

重編譯JAVA類
重新對JAVA類進行編譯,如果重新編譯失敗,則將JAVA類置為禁止狀態(tài)。
重編功能主要用于檢驗JAVA類的正確性。
語法格式
ALTER JAVA CLASS [< 模式名>.] COMPILE [DEBUG];
參數(shù)
1.< 模式名> 指明被重編譯的JAVA類所屬的模式;
2. 指明被重編譯的JAVA類的名字;
3.[DEBUG] 可忽略。

所需權(quán)限
執(zhí)行該操作的用戶必須是JAVA類的創(chuàng)建者,或者具有DBA權(quán)限。
12.2.3 刪除JAVA類
JAVA類的刪除通過DROP CLASS完成。
語法格式
DROP CLASS < 類名>[RESTRICT | CASCADE];

類的使用
下面列舉一個簡單的應(yīng)用實例。在列對象上如何使用JAVA CLASS。
1.創(chuàng)建JAVA CLASS。

SQL> create or replace java class jcls
2   {
3     int a;
4     public static int testAdd2(int a, int b)
5     { //此處創(chuàng)建的是靜態(tài)STATIC方法
6       return a + b;
7     }
8     public int testAdd3(int a, int b, int c)
9     { //此處創(chuàng)建的是成員方法
10     return a + b +c;
11    }
12  };
13  /
executed successfully
used time: 16.964(ms). Execute id is 123.

2. 在列對象中使用JAVA CLASS。

SQL> create table tt2(c1 int, c2 jcls);
executed successfully
used time: 9.261(ms). Execute id is 124.
SQL> insert into tt2 values(jcls.testadd2(1,2),jcls(1)); //靜態(tài)方法調(diào)用
2   /
affect rows 1
used time: 1.255(ms). Execute id is 125.
SQL> insert into tt2 values(jcls().testadd3(1,2,3),jcls(2)); //成員方法調(diào)用之前必須實例化
2   /
affect rows 1
used time: 1.023(ms). Execute id is 126.

感謝各位的閱讀,以上就是“DM類數(shù)據(jù)類型贊怎么使用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對DM類數(shù)據(jù)類型贊怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

文章標題:DM類數(shù)據(jù)類型贊怎么使用-創(chuàng)新互聯(lián)
標題路徑:http://www.chinadenli.net/article32/pdpsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護品牌網(wǎng)站制作網(wǎng)站制作做網(wǎng)站標簽優(yōu)化品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)