[計(jì)算機(jī)軟件及應(yīng)用]PLSQL程序設(shè)計(jì)_第1頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]PLSQL程序設(shè)計(jì)_第2頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]PLSQL程序設(shè)計(jì)_第3頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]PLSQL程序設(shè)計(jì)_第4頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]PLSQL程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PL/SQL 程序設(shè)計(jì)目 錄第一章 PL/SQL 程序設(shè)計(jì)簡(jiǎn)介.4§1.2 SQL與PL/SQL.4§1.2.1 什么是PL/SQL?.4§1.2.1 PL/SQL的好處.4§1.2.2 PL/SQL 可用的SQL語(yǔ)句.5§1.3 運(yùn)行PL/SQL程序.5第二章 PL/SQL塊結(jié)構(gòu)和組成元素.6§2.1 PL/SQL塊.6§2.2 PL/SQL結(jié)構(gòu).6§2.3 標(biāo)識(shí)符.6§2.4 PL/SQL 變量類(lèi)型.7§2.4.1 變量類(lèi)型.7§2.4.2 復(fù)合類(lèi)型.9§2.4.3 使用

2、%ROWTYPE.11§2.4.4 LOB類(lèi)型*.11§2.4.5 Bind 變量.11§2.4.6 INDEX BY TABLES.12§2.4.7 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換*.13§2.5 運(yùn)算符和表達(dá)式(數(shù)據(jù)定義).13§2.5.1 關(guān)系運(yùn)算符.13§2.5.2 一般運(yùn)算符.13§2.5.3 邏輯運(yùn)算符.14§2.6 變量賦值.14§2.6.1 字符及數(shù)字運(yùn)算特點(diǎn).14§2.6.2 BOOLEAN 賦值.14§2.6.3 數(shù)據(jù)庫(kù)賦值.14§2.6.4 可轉(zhuǎn)換的類(lèi)型賦值.

3、15§2.7 變量作用范圍及可見(jiàn)性.15§2.8 注釋.16§2.9 簡(jiǎn)單例子.17§2.9.1 簡(jiǎn)單數(shù)據(jù)插入例子.17§2.9.2 簡(jiǎn)單數(shù)據(jù)刪除例子.17第三章 PL/SQL流程控制語(yǔ)句.18§3.1 條件語(yǔ)句.18§3.2 CASE 表達(dá)式.19§3.3 循環(huán).19§3.3 標(biāo)號(hào)和GOTO.21§3.4 NULL 語(yǔ)句.21第四章 游標(biāo)的使用.23 - 1 -2§4.1 游標(biāo)概念.23§4.1.1 處理顯式游標(biāo).23§4.1.2 處理隱式游標(biāo).26§4

4、.1.3 游標(biāo)修改和刪除操作.27第五章 異常錯(cuò)誤處理.29§5.1 異常處理概念.29§5.1.1 預(yù)定義的異常處理.29§5.1.2 非預(yù)定義的異常處理.30§5.1.3 用戶(hù)自定義的異常處理.31§5.1.4 用戶(hù)定義的異常處理.32§5.2 異常錯(cuò)誤傳播.33§5.2.1 在執(zhí)行部分引發(fā)異常錯(cuò)誤.33§5.2.2 在聲明部分引發(fā)異常錯(cuò)誤.34§5.3 異常錯(cuò)誤處理編程.34§5.4 在 PL/SQL 中使用 SQLCODE, SQLERRM.35第六章 存儲(chǔ)函數(shù)和過(guò)程.36§6

5、.1 引言.36§6.2 創(chuàng)建函數(shù).36§6.3 存儲(chǔ)過(guò)程.39§6.3.1 創(chuàng)建過(guò)程.39§6.3.2 調(diào)用存儲(chǔ)過(guò)程.40§6.3.3 開(kāi)發(fā)存儲(chǔ)過(guò)程步驟.42§6.3.4 與過(guò)程相關(guān)數(shù)據(jù)字典.43第七章 包的創(chuàng)建和應(yīng)用.44§7.1 引言.44§7.2 包的定義.44§7.3 包的開(kāi)發(fā)步驟.45§7.4 包定義的說(shuō)明.45§7.5 子程序重載.48§7.6 刪除過(guò)程、函數(shù)和包.50§7.7 包的管理.50第八章 觸發(fā)器.51§8.1 觸發(fā)器類(lèi)型.51&#

6、167;8.1.1 DML觸發(fā)器.51§8.1.2 替代觸發(fā)器.51§8.1.3 系統(tǒng)觸發(fā)器.51§8.2 創(chuàng)建觸發(fā)器.51§8.2.1 觸發(fā)器觸發(fā)次序.53§8.2.2 創(chuàng)建DML觸發(fā)器.53§8.2.3 創(chuàng)建替代(Instead_of)觸發(fā)器.54§8.2.3 創(chuàng)建系統(tǒng)事件觸發(fā)器.54 §8.2.4 系統(tǒng)觸發(fā)器事件屬性.55§8.2.5 使用觸發(fā)器謂詞.56§8.2.6 重新編譯觸發(fā)器.56§8.3 刪除和使能觸發(fā)器.56§8.4 觸發(fā)器和數(shù)據(jù)字典.57§8.5

7、 數(shù)據(jù)庫(kù)觸發(fā)器的應(yīng)用舉例.57- 3 -4第一章 PL/SQL 程序設(shè)計(jì)簡(jiǎn)介PL /SQL是一種高級(jí)數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言,該語(yǔ)言專(zhuān)門(mén)用于在各種環(huán)境下對(duì)ORACLE數(shù)據(jù)庫(kù)進(jìn)行訪(fǎng)問(wèn)。由于該語(yǔ)言集成于數(shù)據(jù)庫(kù)服務(wù)器中,所以PL/SQL代碼可以對(duì)數(shù)據(jù)進(jìn)行快速高效的處理。除此之外,可以在ORACLE數(shù)據(jù)庫(kù)的某些客戶(hù)端工具中,使用PL/SQL語(yǔ)言也是該語(yǔ)言的一個(gè)特點(diǎn)。本章的主要內(nèi)容是討論引入PL/SQL語(yǔ)言的必要性和該語(yǔ)言的主要特點(diǎn),以及了解PL/SQL語(yǔ)言的重要性和數(shù)據(jù)庫(kù)版本問(wèn)題。還要介紹一些貫穿全書(shū)的更詳細(xì)的高級(jí)概念,并在本章的最后就我們?cè)诒緯?shū)案例中使用的數(shù)據(jù)庫(kù)表的若干約定做一說(shuō)明。本章主要重點(diǎn):&

8、;#1048698; PL/SQL概述􀁺 PL/SQL塊結(jié)構(gòu)􀁺 PL/SQL流程􀁺 運(yùn)算符和表達(dá)式􀁺 游標(biāo)􀁺 異常處理􀁺 數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程和函數(shù)􀁺 包􀁺 觸發(fā)器§1.2 SQL與PL/SQL§1.2.1 什么是PL/SQL?PL/SQL是 Procedure Language & Structured Query Language 的縮寫(xiě)。ORACLE的SQL是支

9、持ANSI(American national Standards Institute)和ISO92 (International Standards Organization)標(biāo)準(zhǔn)的產(chǎn)品。PL/SQL是對(duì)SQL語(yǔ)言存儲(chǔ)過(guò)程語(yǔ)言的擴(kuò)展。從ORACLE6以后,ORACLE的RDBMS附帶了PL/SQL。它現(xiàn)在已經(jīng)成為一種過(guò)程處理語(yǔ)言,簡(jiǎn)稱(chēng)PL/SQL。目前的PL/SQL包括兩部分,一部分是數(shù)據(jù)庫(kù)引擎部分;另一部分是可嵌入到許多產(chǎn)品(如C語(yǔ)言,JAVA語(yǔ)言等)工具中的獨(dú)立引擎。可以將這兩部分稱(chēng)為:數(shù)據(jù)庫(kù)PL/SQL和工具PL/SQL。兩者的編程非常相似。都具有編程結(jié)構(gòu)、語(yǔ)法和邏輯機(jī)制。工具PL/S

10、QL另外還增加了用于支持工具(如ORACLE Forms)的句法,如:在窗體上設(shè)置按鈕等。本章主要介紹數(shù)據(jù)庫(kù)PL/SQL內(nèi)容。§1.2.1 PL/SQL的好處§ 有利于客戶(hù)/服務(wù)器環(huán)境應(yīng)用的運(yùn)行對(duì)于客戶(hù)/服務(wù)器環(huán)境來(lái)說(shuō),真正的瓶頸是網(wǎng)絡(luò)上。無(wú)論網(wǎng)絡(luò)多快,只要客戶(hù)端與服務(wù)器進(jìn)行大量的數(shù)據(jù)交換。應(yīng)用運(yùn)行的效率自然就回受到影響。如果使用PL/SQL進(jìn)行編程,將這種具有大量數(shù)據(jù)處理的應(yīng)用放在服務(wù)器端來(lái)執(zhí)行。自然就省去了數(shù)據(jù)在網(wǎng)上的傳輸時(shí)間。- 4 -5§ 適合于客戶(hù)環(huán)境PL/SQL由于分為數(shù)據(jù)庫(kù)PL/SQL部分和工具PL/SQL。對(duì)于客戶(hù)端來(lái)說(shuō)

11、,PL/SQL可以嵌套到相應(yīng)的工具中,客戶(hù)端程序可以執(zhí)行本地包含PL/SQL部分,也可以向服務(wù)發(fā)SQL命令或激活服務(wù)器端的PL/SQL程序運(yùn)行。§1.2.2 PL/SQL 可用的SQL語(yǔ)句PL/SQL是ORACLE系統(tǒng)的核心語(yǔ)言,現(xiàn)在ORACLE的許多部件都是由PL/SQL寫(xiě)成。在PL/SQL中可以使用的SQL語(yǔ)句有:INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。提示:    在 PL/SQL中只能用 SQL語(yǔ)句中的 DML 部分,不能用 DDL 部分,如果要在PL/SQL中使用DDL(如&#

12、160;   CREATE table 等)的話(huà),只能以動(dòng)態(tài)的方式來(lái)使用。􀁺 ORACLE 的 PL/SQL 組件在對(duì) PL/SQL 程序進(jìn)行解釋時(shí),同時(shí)對(duì)在其所使用的表名、列名及數(shù)據(jù)類(lèi)型進(jìn)行  檢查。􀁺 PL/SQL 可以在SQL*PLUS 中使用。􀁺 PL/SQL 可以在高級(jí)語(yǔ)言中使用。􀁺 PL/SQL可以 在ORACLE的 開(kāi)發(fā)工具中使用。􀁺 其它開(kāi)發(fā)工具也可以調(diào)用PL/SQL編寫(xiě)的過(guò)程和函數(shù),如Power Builder 等都可

13、以調(diào)用服務(wù)器端的PL/SQL過(guò)程。§1.3 運(yùn)行PL/SQL程序PL/SQL程序的運(yùn)行是通過(guò)ORACLE中的一個(gè)引擎來(lái)進(jìn)行的。這個(gè)引擎可能在ORACLE的服務(wù)器端,也可能在 ORACLE 應(yīng)用開(kāi)發(fā)的客戶(hù)端。引擎執(zhí)行PL/SQL中的過(guò)程性語(yǔ)句,然后將SQL語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器來(lái)執(zhí)行。再將結(jié)果返回給執(zhí)行端。- 5 -6第二章 PL/SQL塊結(jié)構(gòu)和組成元素§2.1 PL/SQL塊PL/SQL程序由三個(gè)塊組成,即聲明部分、執(zhí)行部分、異常處理部分。PL/SQL塊的結(jié)構(gòu)如下:DECLARE      /* 聲明部分: 在此聲明PL/SQL用到的

14、變量,類(lèi)型及游標(biāo),以及局部的存儲(chǔ)過(guò)程和函數(shù) */BEGIN      /* 執(zhí)行部分: 過(guò)程及SQL 語(yǔ)句 , 即程序的主要部分 */EXCEPTION      /* 執(zhí)行異常部分: 錯(cuò)誤處理 */END;其中 執(zhí)行部分是必須的。PL/SQL塊可以分為三類(lèi):1. 無(wú)名塊:動(dòng)態(tài)構(gòu)造,只能執(zhí)行一次。2. 子程序:存儲(chǔ)在數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程、函數(shù)及包等。當(dāng)在數(shù)據(jù)庫(kù)上建立好后可以在其它程序中調(diào)用它們。3. 觸發(fā)器:當(dāng)數(shù)據(jù)庫(kù)發(fā)生操作時(shí),會(huì)觸發(fā)一些事件,從而自動(dòng)執(zhí)行相應(yīng)的程序。§2.2 PL/SQL結(jié)構(gòu)&#1

15、048698; PL/SQL塊中可以包含子塊;􀁺 子塊可以位于 PL/SQL中的任何部分;􀁺 子塊也即PL/SQL中的一條命令;§2.3 標(biāo)識(shí)符PL/SQL程序設(shè)計(jì)中的標(biāo)識(shí)符定義與SQL 的標(biāo)識(shí)符定義的要求相同。要求和限制有:􀁺 標(biāo)識(shí)符名不能超過(guò)30字符;􀁺 第一個(gè)字符必須為字母;􀁺 不分大小寫(xiě);􀁺 不能用-(減號(hào));􀁺 不能是SQL保留字。提示: 一般不要把變量名聲明與表中字段名完全一樣,如果這樣可能得

16、到不正確的結(jié)果.- 6 -7例如:下面的例子將會(huì)刪除所有的紀(jì)錄,而不是KING 的記錄;DECLARE   Ename varchar2(20) :=KING;BEGIN   DELETE FROM emp WHERE ename=ename;END;變量命名在PL/SQL中有特別的講究,建議在系統(tǒng)的設(shè)計(jì)階段就要求所有編程人員共同遵守一定的要求,使得整個(gè)系統(tǒng)的文檔在規(guī)范上達(dá)到要求。下面是建議的命名方法:§2.4 PL/SQL 變量類(lèi)型在前面的介紹中,有系統(tǒng)的數(shù)據(jù)類(lèi)型,也可以自定義數(shù)據(jù)類(lèi)型。下表是ORACLE類(lèi)型和PL/SQL中的變量類(lèi)型的合法使

17、用列表:§2.4.1 變量類(lèi)型在ORACLE8i中可以使用的變量類(lèi)型有:例1. 插入一條記錄并顯示;DECLARE   Row_id UROWID;   info   VARCHAR2(40);BEGIN   INSERT INTO dept VALUES (90, SERVICE, BEIJING)   RETURNING rowid, dname|:|to_char(deptno)|:|loc   INTO row_id, info;   D

18、BMS_OUTPUT.PUT_LINE(ROWID:|row_id);   DBMS_OUTPUT.PUT_LINE(info);END;其中:RETURNING子句用于檢索INSERT語(yǔ)句中所影響的數(shù)據(jù)行數(shù),當(dāng)INSERT語(yǔ)句使用VALUES 子句插入數(shù)據(jù)時(shí),RETURNING 字句還可將列表達(dá)式、ROWID和REF值返回到輸出變量中。在使用RETURNING 子句是應(yīng)注意以下幾點(diǎn)限制:1 不能并行DML語(yǔ)句和遠(yuǎn)程對(duì)象一起使用;2 不能檢索LONG 類(lèi)型信息;3 當(dāng)通過(guò)視圖向基表中插入數(shù)據(jù)時(shí),只能與單基表視圖一起使用。例2. 修改一條記錄并顯示DECLARE 

19、  Row_id UROWID;    info   VARCHAR2(40);BEGIN    UPDATE dept SET deptno=80 WHERE DNAME=SERVICE    RETURNING rowid, dname|:|to_char(deptno)|:|loc    INTO row_id, info;    DBMS_OUTPUT.PUT_LINE(ROWID:|row_id);    DBMS_OUTPUT.PUT

20、_LINE(info);END;其中:RETURNING子句用于檢索被修改行信息:當(dāng)UPDATE語(yǔ)句修改單行數(shù)據(jù)時(shí),RETURNING 子句可以檢索被修改行的ROWID和REF值,以及行中被修改列的列表達(dá)式,- 8 -9并可將他們存儲(chǔ)到PL/SQL變量或復(fù)合變量中;當(dāng)UPDATE語(yǔ)句修改多行數(shù)據(jù)時(shí),RETURNING 子句可以將被修改行的ROWID和REF值,以及列表達(dá)式值返回到復(fù)合變量數(shù)組中。在UPDATE中使用RETURNING 子句的限制與INSERT語(yǔ)句中對(duì)RETURNING子句的限制相同。例3. 刪除一條記錄并顯示DECLARE     Row

21、_id  UROWID;     info    VARCHAR2(40);BEGIN     DELETE dept WHERE DNAME=SERVICE     RETURNING rowid, dname|:|to_char(deptno)|:|loc     INTO row_id, info;     DBMS_OUTPUT.PUT_LINE(R

22、OWID:|row_id);     DBMS_OUTPUT.PUT_LINE(info);END;其中:RETURNING子句用于檢索被修改行信息:當(dāng)UPDATE語(yǔ)句修改單行數(shù)據(jù)時(shí),RETURNING 子句可以檢索被修改行的ROWID和REF值,以及行中被修改列的列表達(dá)式,并可將他們存儲(chǔ)到PL/SQL變量或復(fù)合變量中;當(dāng)UPDATE語(yǔ)句修改多行數(shù)據(jù)時(shí),RETURNING 子句可以將被修改行的ROWID和REF值,以及列表達(dá)式值返回到復(fù)合變量數(shù)組中。在UPDATE中使用RETURNING 子句的限制與INSERT語(yǔ)句中對(duì)RETURNING子句的限制相同。

23、§2.4.2 復(fù)合類(lèi)型   ORACLE 在 PL/SQL 中除了提供象前面介紹的各種類(lèi)型外,還提供一種稱(chēng)為復(fù)合類(lèi)型的類(lèi)型-記錄和表.§ 記錄類(lèi)型記錄類(lèi)型是把邏輯相關(guān)的數(shù)據(jù)作為一個(gè)單元存儲(chǔ)起來(lái),它必須包括至少一個(gè)標(biāo)量型或RECORD 數(shù)據(jù)類(lèi)型的成員,稱(chēng)作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但邏輯相關(guān)的信息。定義記錄類(lèi)型語(yǔ)法如下:TYPE record_type IS RECORD(Field1 type1 NOT NULL := exp1 ,Field2 type2 NOT NULL := exp2 ,. .

24、 . . . .Fieldn typen NOT NULL := expn ) ;例4 :- 9 -=10DECLARETYPE test_rec IS RECORD(    Code    VARCHAR2(10),    Name    VARCHAR2(30) NOT NULL :=a book);    V_book  test_rec;BEGIN    V_book.code :=123;    V_ :=C

25、+ Programming;    DBMS_OUTPUT.PUT_LINE(v_book.code|v_);END;可以用 SELECT語(yǔ)句對(duì)記錄變量進(jìn)行賦值,只要保證記錄字段與查詢(xún)結(jié)果列表中的字段相配即可。§ 使用%TYPE定義一個(gè)變量,其數(shù)據(jù)類(lèi)型與已經(jīng)定義的某個(gè)數(shù)據(jù)變量的類(lèi)型相同,或者與數(shù)據(jù)庫(kù)表的某個(gè)列的數(shù)據(jù)類(lèi)型相同,這時(shí)可以使用%TYPE。使用%TYPE特性的優(yōu)點(diǎn)在于:􀁺 所引用的數(shù)據(jù)庫(kù)列的數(shù)據(jù)類(lèi)型可以不必知道;􀁺 所引用的數(shù)據(jù)庫(kù)列的數(shù)據(jù)類(lèi)型可以實(shí)時(shí)改變。例5:DECLAR

26、E- 用 %TYPE 類(lèi)型定義與表相配的字段TYPE t_Record IS RECORD(     T_no    emp.empno%TYPE,     T_name  emp.ename%TYPE,     T_sal   emp.sal%TYPE );- 聲明接收數(shù)據(jù)的變量     v_emp   t_Record;BEGIN   

27、;  SELECT empno, ename, sal INTO v_emp FROM emp WHERE empno=7788;     DBMS_OUTPUT.PUT_LINE     (TO_CHAR(v_emp.t_no)|v_emp.t_name|TO_CHAR(v_emp.t_sal);END;例6:DECLARE     v_empno emp.empno%TYPE :=&empno;     

28、Type    r_record is record (     v_name  emp.ename%TYPE,     v_sal   emp.sal%TYPE,     v_date  emp.hiredate%TYPE);     Rec     r_record;- 10 -=11BEGIN  

29、60; SELECT ename, sal, hiredate INTO Rec FROM emp WHERE empno=v_empno;    DBMS_OUTPUT.PUT_LINE(Rec.v_name|'-'|Rec.v_sal|'-'|Rec.v_date);END;§2.4.3 使用%ROWTYPEPL/SQL 提供%ROWTYPE操作符, 返回一個(gè)記錄類(lèi)型, 其數(shù)據(jù)類(lèi)型和數(shù)據(jù)庫(kù)表的數(shù)據(jù)結(jié)構(gòu)相一致。使用%ROWTYPE特性的優(yōu)點(diǎn)在于:􀁺 所引用的數(shù)據(jù)庫(kù)中列的個(gè)數(shù)和數(shù)據(jù)類(lèi)型可以不必知道;&

30、;#1048698; 所引用的數(shù)據(jù)庫(kù)中列的個(gè)數(shù)和數(shù)據(jù)類(lèi)型可以實(shí)時(shí)改變。例7:DECLARE    v_empno emp.empno%TYPE :=&empno;    rec     emp%ROWTYPE;BEGIN    SELECT * INTO rec FROM emp WHERE empno=v_empno;    DBMS_OUTPUT.PUT_LINE('姓名:'|rec.ename|'工資:'|rec.sal|'

31、;工作時(shí)間:'|rec.hiredate);END;§2.4.4 LOB類(lèi)型*ORACLE提供了LOB (Large OBject)類(lèi)型,用于存儲(chǔ)大的數(shù)據(jù)對(duì)象的類(lèi)型。ORACLE目前主要支持BFILE, BLOB, CLOB 及 NCLOB 類(lèi)型。BFILE (Movie)存放大的二進(jìn)制數(shù)據(jù)對(duì)象,這些數(shù)據(jù)文件不放在數(shù)據(jù)庫(kù)里,而是放在操作系統(tǒng)的某個(gè)目錄里,數(shù)據(jù)庫(kù)的表里只存放文件的目錄。BLOB(Photo)存儲(chǔ)大的二進(jìn)制數(shù)據(jù)類(lèi)型。變量存儲(chǔ)大的二進(jìn)制對(duì)象的位置。大二進(jìn)制對(duì)象的大小NCLOB存儲(chǔ)大的NCHAR字符數(shù)據(jù)類(lèi)型。每個(gè)變量存儲(chǔ)大字符對(duì)象的位置,該位置指到大字符數(shù)據(jù)塊。大字符

32、對(duì)象的大小§2.4.5 Bind 變量綁定變量是在主機(jī)環(huán)境中定義的變量。在PL/SQL 程序中可以使用綁定變量作為他們將要使用的其它變量。為了在PL/SQL 環(huán)境中聲明綁定變量,使用命令VARIABLE。例如: - 11 -12VARIABLE return_code NUMBERVARIABLE return_msg  VARCHAR2(20)可以通過(guò)SQL*Plus命令中的PRINT 顯示綁定變量的值。例如:PRINT return_codePRINT return_msg例7:    VARIABLE result NUMBERBEGIN

33、    SELECT (sal*12)+nvl(comm, 0) INTO :result FROM emp WHERE empno=7788;END;PRINT result§2.4.6 INDEX BY TABLES包括兩個(gè)基本成分:數(shù)據(jù)處理類(lèi)型為BINARY_INTEGER主鍵;標(biāo)量或記錄數(shù)據(jù)類(lèi)型的列TYPE type_name IS TABLE OFcolumn_type | variable%TYPE | table.column%TYPE NOT NULL | table%ROWTYPE INDEX BY BINARY_INTEGER;方法描述EXIS

34、TS(n)    Return TRUE if the nth element in a PL/SQL table exists;COUNT    Returns the number of elements that a PL/SQL table currently contains;FIRSTLAST    Return the first and last (smallest and lastest) index numbers in aPL/SQL table. Returns NULL if the PL/SQL table

35、 is empty.PRIOR(n)    Returns the index number that precedes index n in a PL/SQL table;NEXT(N)    Returns the index number that succeeds index n in a PL/SQL table;TRIMTRIM    removes one element from the end of a PL/SQL table.TRIM(n) removes n element from the end of a

36、PL/SQL table.DELETEDELETE  removes all elements from a PL/SQL table.DELETE(n) removes the nth elements from a PL/SQL table.DELETE(m, n) removes all elements in the range m to n from a PL/SQLtable.例8:DECLARE     TYPE dept_table_type IS TABLE OF     de

37、pt%ROWTYPE INDEX BY BINARY_INTEGER;     my_dname_table    dept_table_type;     v_count           number(2) :=4;BEGIN     FOR int IN 1 . v_count    LOOP     SELE

38、CT * INTO my_dname_table(int) FROM dept WHERE deptno=int*10;   END LOOP;     FOR int IN my_dname_table.FIRST . my_dname_table.LAST    LOOP     DBMS_OUTPUT.PUT_LINE(Department number: |my_dname_table(int).deptno);     DBM

39、S_OUTPUT.PUT_LINE(Department name: | my_dname_table(int).dname);   END LOOP;END;§2.4.7 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換*隱式類(lèi)型轉(zhuǎn)換BIN_INTCHARDATELONGNUMBERPLS_INTUROWIDVARCHAR2BIN_INTCHARDATELONGNUMBERRAWUROWIDVARCHAR2§2.5 運(yùn)算符和表達(dá)式(數(shù)據(jù)定義)§2.5.1 關(guān)系運(yùn)算符運(yùn)算符意義=等于, != , = , =不等于大于=大于或等于§2.5.2 一般運(yùn)算符運(yùn)算符意義+加號(hào)-減號(hào)*乘號(hào)/除號(hào):=賦值號(hào)=>關(guān)系號(hào) -

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論