成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

DM自定義數(shù)據(jù)類型-創(chuàng)新互聯(lián)

自定義類型
用戶使用CREATE TYPE語(yǔ)句可以定義記錄類型、對(duì)象類型、命名的數(shù)組類型、集合類型等,如果在對(duì)象類型中聲明了過(guò)程或方法,可以使用CREATE TYPE BODY定義這些過(guò)程和方法。

創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷(xiāo)的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,微信平臺(tái)小程序開(kāi)發(fā),網(wǎng)頁(yè)設(shè)計(jì)制作,成都手機(jī)網(wǎng)站制作,營(yíng)銷(xiāo)型網(wǎng)站建設(shè)幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。

創(chuàng)建類型可以使用CREATE TYPE語(yǔ)句創(chuàng)建記錄類型、對(duì)象類型、數(shù)組和集合類型。
語(yǔ)法格式
CREATE [OR REPLACE] TYPE [< 模式名>.]< 類型名>[WITH ENCRYPTION] [< 調(diào)用權(quán)限子句>] AS|IS < 記錄類型定義子句>|< 對(duì)象類型定義子句>
|< 數(shù)組類型定義子句>|< 集合類型定義子句>
[< 調(diào)用權(quán)限子句>]::= AUTHID DEFINER
| AUTHID CURRENT_USER
< 對(duì)象類型定義子句> ::= OBJECT [UNDER [< 模式名>.]< 父類型名>] (< 對(duì)象定義>,{< 對(duì)象定義>})[[NOT] FINAL] [[NOT] INSTANTIABLE]
< 對(duì)象定義> ::= < 變量列表定義>|< 過(guò)程聲明>|< 函數(shù)聲明>|< 構(gòu)造函數(shù)聲明>
< 過(guò)程聲明> ::= [< 方法繼承屬性>][STATIC|MEMBER] PROCEDURE < 過(guò)程名> < 參數(shù)列表>
< 函數(shù)聲明> ::= [< 方法繼承屬性>][MAP] [STATIC|MEMBER] FUNCTION < 函數(shù)名> < 參數(shù)列表> RETURN < 返回值數(shù)據(jù)類型>[DETERMINISTIC]
[PIPELINED]
< 方法繼承屬性> ::= < 重載屬性> | | < 重載屬性>
< 重載屬性> ::= [NOT] OVERRDING
::= FINAL | NOT FINAL | INSTANTIABLE | NOT INSTANTIABLE
< 構(gòu)造函數(shù)聲明> ::= CONSTRUCTOR FUNCTION < 函數(shù)名> < 參數(shù)列表> RETURN SELF AS RESULT
< 記錄類型定義子句> ::= RECORD(變量列表定義)
< 數(shù)組類型定義子句> ::= ARRAY < 數(shù)據(jù)類型>' [' [< 常量表達(dá)式>]{,[< 常量表達(dá)式>]}']'
< 集合類型定義子句> ::= < 數(shù)組集合定義子句>|< 嵌套表定義子句>|< 索引表定義子句>
< 數(shù)組集合定義子句> ::= VARRAY(< 常量表達(dá)式>) OF < 數(shù)據(jù)類型>
< 嵌套表定義子句> ::= TABLE OF < 數(shù)據(jù)類型>
< 索引表定義子句> ::= TABLE OF < 數(shù)據(jù)類型> [INDEX BY < 數(shù)據(jù)類型>]

使用說(shuō)明
1. 對(duì)象類型中過(guò)程和函數(shù)的聲明都是前向聲明,類型定義中不包括任何實(shí)現(xiàn)代碼;達(dá)夢(mèng)系統(tǒng)中對(duì)象類型與類是等價(jià)的。
2. 對(duì)象類型中過(guò)程和函數(shù)可以聲明為STATIC類型,表明為靜態(tài)過(guò)程或函數(shù);也可以聲明為MEMBER,表明為成員過(guò)程或函數(shù),非STATIC且非構(gòu)造函數(shù)的方法缺省為成員方法。MAP表示將對(duì)象類型的實(shí)例映射為標(biāo)量數(shù)值,只能用于成員函數(shù);
3. 關(guān)于對(duì)象類型的繼承,參考12.1節(jié)中類繼承的相關(guān)說(shuō)明;
4. WITH ENCRYPTION 選項(xiàng),指定是否對(duì)自定義類型定義進(jìn)行加密;
5. 記錄類型的定義格式與對(duì)象類型類似,但記錄類型中不能有過(guò)程和函數(shù)聲明;
6. 在< 數(shù)組類型定義子句>的數(shù)組長(zhǎng)度定義的[]內(nèi)添加’,’可以定義多維數(shù)組。若指定了常量表達(dá)式,則定義的是靜態(tài)數(shù)組,其數(shù)組長(zhǎng)度是固定的。若沒(méi)有指定常量表達(dá)式,則定義的是動(dòng)態(tài)數(shù)組,其數(shù)組長(zhǎng)度是在使用時(shí)指定。理論上DM支持靜態(tài)數(shù)組的每一個(gè)維度的大長(zhǎng)度為65534,動(dòng)態(tài)數(shù)組的每一個(gè)維度的大長(zhǎng)度為2147483646,但是數(shù)組大長(zhǎng)度同時(shí)受系統(tǒng)內(nèi)部空間大小的限制,如果超出堆棧/堆的空間限制,系統(tǒng)會(huì)報(bào)錯(cuò)。
7. 數(shù)組集合類型中的常量表達(dá)式定義了其大容量,其數(shù)組元素?cái)?shù)據(jù)類型可以是基礎(chǔ)類型,也可以是自定義數(shù)據(jù)類型。
8. 嵌套表類型和索引表類型沒(méi)有元素個(gè)數(shù)限制,元素?cái)?shù)據(jù)類型可以是基礎(chǔ)數(shù)據(jù)類型也可以是其它自定義類型或是對(duì)象、記錄、靜態(tài)數(shù)組,但是不能是動(dòng)態(tài)數(shù)組;第二個(gè)則是索引表的下標(biāo)類型,目前僅支持INTEGER/INT和VARCHAR兩種類型,分別代表整數(shù)下標(biāo)和字符串下標(biāo)。對(duì)于VARCHAR類型,長(zhǎng)度不能超過(guò)1024。

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

創(chuàng)建類型體對(duì)于對(duì)象類型中聲明的過(guò)程和函數(shù),在類型體中進(jìn)行實(shí)現(xiàn)。
語(yǔ)法格式
CREATE [OR REPLACE] TYPE BODY [< 模式名>.]< 類型名>[WITH ENCRYPTION] AS|IS < 對(duì)象類型體定義子句> END
< 對(duì)象類型體定義子句>::= < 對(duì)象類型體定義>,{< 對(duì)象類型體定義>}
< 對(duì)象類型體定義>::= < 過(guò)程實(shí)現(xiàn)>|< 函數(shù)實(shí)現(xiàn)>|< 構(gòu)造函數(shù)實(shí)現(xiàn)>
< 過(guò)程實(shí)現(xiàn)> ::= [< 方法繼承屬性>][STATIC|MEMBER] PROCEDURE < 過(guò)程名> < 參數(shù)列表> AS|IS BEGIN < 實(shí)現(xiàn)體> END [過(guò)程名]
< 函數(shù)實(shí)現(xiàn)> ::= [< 方法繼承屬性>][MAP] [STATIC|MEMBER] FUNCTION < 函數(shù)名>< 參數(shù)列表> RETURN < 返回值數(shù)據(jù)類型>[DETERMINISTIC]
[PIPELINED] AS|IS BEGIN < 實(shí)現(xiàn)體> END [函數(shù)名]
< 方法繼承屬性> ::= < 重載屬性> | | < 重載屬性>
< 重載屬性> ::= [NOT] OVERRDING
::= FINAL | NOT FINAL | INSTANTIABLE | NOT INSTANTIABLE
< 構(gòu)造函數(shù)實(shí)現(xiàn)> ::= CONSTRUCTOR FUNCTION < 函數(shù)名> < 參數(shù)列表> RETURN SELF AS RESULT AS|IS BEGIN < 實(shí)現(xiàn)體> END [函數(shù)名]

使用說(shuō)明
1. 對(duì)象類型體中的過(guò)程、函數(shù)定義必須和類型定義中的前向聲明完全相同。包括過(guò)程的名字、參數(shù)定義列表的參數(shù)名和數(shù)據(jù)類型定義;

所需權(quán)限
使用該語(yǔ)句的用戶必須是DBA或該類型對(duì)象的擁有者且具有CREATE TYPE數(shù)據(jù)庫(kù)權(quán)限的用戶。

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

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

刪除類型
類型的刪除分為類型刪除和類型體的刪除。對(duì)于擁有類型體的對(duì)象類型,刪除類型會(huì)將類型體一起刪除;刪除類型體的話,類型本身依然存在。

刪除類型使用DROP TYPE完成類型的刪除。對(duì)于擁有類型體的對(duì)象類型,刪除類型會(huì)將類型體一起刪除。
語(yǔ)法格式
DROP TYPE [< 模式名>.]< 類型名>[RESTRICT | CASCADE];
使用說(shuō)明
1.如果被刪除的類型不屬于當(dāng)前模式,必須在語(yǔ)句中指明模式名;
2.如果一個(gè)擁有類型體的對(duì)象類型被刪除,那么對(duì)應(yīng)的類型體被自動(dòng)刪除。

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

刪除類型體
使用DROP TYPE BODY刪除一個(gè)對(duì)象類型的類型體。
語(yǔ)法格式
DROP TYPE BODY [< 模式名>.]< 類型名>[RESTRICT | CASCADE]; 使用說(shuō)明
如果被刪除的類型體不屬于當(dāng)前模式,必須在語(yǔ)句中指明模式名。

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

自定義類型的使用
使用規(guī)則
1. 對(duì)象類型與類等價(jià),類的使用規(guī)則可詳見(jiàn)第12章《類類型》;
2. 創(chuàng)建的記錄類型、數(shù)組類型和集合類型,可以直接在DMSQL程序語(yǔ)句塊中使用,不必在語(yǔ)句塊中聲明類型,使用方式可參見(jiàn)10.1.1節(jié)部分;

3. 用戶自定義數(shù)據(jù)類型可以作為其他用戶自定義數(shù)據(jù)類型的元素類型或成員變量類型;
4. 只有對(duì)象類型可以直接作為表中列的數(shù)據(jù)類型;其他類型只能作為對(duì)象類型中成員變量的類型或類型中嵌套使用的數(shù)據(jù)類型。但含有索引表類型和游標(biāo)類型的對(duì)象類型也不能作為表中列的數(shù)據(jù)類型。

應(yīng)用實(shí)例
創(chuàng)建一個(gè)用來(lái)表示復(fù)數(shù)的對(duì)象類型,有實(shí)數(shù)部分和虛數(shù)部分,并實(shí)現(xiàn)了復(fù)數(shù)的加與減的操作。

SQL> CREATE TYPE COMPLEX AS OBJECT(
2     RPART REAL,
3     IPART REAL,
4     FUNCTION PLUS(X COMPLEX) RETURN COMPLEX,
5     FUNCTION LES(X COMPLEX) RETURN COMPLEX
6   );
7   /
executed successfully
used time: 53.553(ms). Execute id is 128
SQL> CREATE TYPE BODY COMPLEX AS
2     FUNCTION PLUS(X COMPLEX) RETURN COMPLEX IS
3     BEGIN
4      RETURN COMPLEX(RPART+X.RPART, IPART+X.IPART);
5     END;
6     FUNCTION LES(X COMPLEX) RETURN COMPLEX IS
7     BEGIN
8      RETURN COMPLEX(RPART-X.RPART, IPART-X.IPART);
9     END;
10  END;
11  /
executed successfully
used time: 14.330(ms). Execute id is 129.

建立表c_tab,表中的第二列的列類型為complex對(duì)象類型。

SQL> CREATE TABLE C_TAB(C1 INT, C2 COMPLEX);
executed successfully
used time: 16.381(ms). Execute id is 130.
SQL> INSERT INTO C_TAB VALUES(1, COMPLEX(2,3));
affect rows 1
used time: 1.508(ms). Execute id is 131.

向表c_tab中插入數(shù)據(jù)

SQL> INSERT INTO C_TAB VALUES(2, COMPLEX(4,2).PLUS(COMPLEX(2,3)));
affect rows 1
used time: 0.969(ms). Execute id is 132.
SQL> commit;
executed successfully
used time: 10.709(ms). Execute id is 133.
SQL> select * from c_tab;
LINEID     C1          C2
---------- ----------- -------------------
1          1           SYSDBA.COMPLEX(2,3)
2          2           SYSDBA.COMPLEX(6,5)
used time: 1.047(ms). Execute id is 134.

網(wǎng)站標(biāo)題:DM自定義數(shù)據(jù)類型-創(chuàng)新互聯(lián)
文章來(lái)源:http://jinyejixie.com/article42/dpojhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、標(biāo)簽優(yōu)化、網(wǎng)站制作、網(wǎng)站導(dǎo)航、虛擬主機(jī)、自適應(yīng)網(wǎng)站

廣告

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

成都app開(kāi)發(fā)公司
宜都市| 隆回县| 莲花县| 靖西县| 六安市| 郑州市| 葫芦岛市| 区。| 磐石市| 宜兴市| 北京市| 台东县| 思南县| 德清县| 通州区| 长泰县| 循化| 金湖县| 曲周县| 千阳县| 滁州市| 松桃| 绥江县| 东辽县| 兴安县| 西贡区| 太仆寺旗| 林周县| 博客| 商河县| 邵东县| 邹城市| 温泉县| 塔城市| 陇川县| 通江县| 汕头市| 苏州市| 区。| 仲巴县| 罗源县|