oraclePLSQL的基本構(gòu)成塊結(jié)構(gòu)和基本語(yǔ)法要求(精)_第1頁(yè)
oraclePLSQL的基本構(gòu)成塊結(jié)構(gòu)和基本語(yǔ)法要求(精)_第2頁(yè)
oraclePLSQL的基本構(gòu)成塊結(jié)構(gòu)和基本語(yǔ)法要求(精)_第3頁(yè)
oraclePLSQL的基本構(gòu)成塊結(jié)構(gòu)和基本語(yǔ)法要求(精)_第4頁(yè)
oraclePLSQL的基本構(gòu)成塊結(jié)構(gòu)和基本語(yǔ)法要求(精)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——oraclePLSQL的基本構(gòu)成,塊結(jié)構(gòu)和基本語(yǔ)法要求,(精)oraclePL/SQL的基本構(gòu)成,塊結(jié)構(gòu)和基本語(yǔ)法要求,數(shù)據(jù)類型,變量定義,運(yùn)算符和函數(shù)

關(guān)鍵字:oraclepl/sql基本構(gòu)成塊結(jié)構(gòu)基本語(yǔ)法要求數(shù)據(jù)類型變量定義運(yùn)算符函數(shù)特點(diǎn)

PL/SQL語(yǔ)言是SQL語(yǔ)言的擴(kuò)展,具有為程序開(kāi)發(fā)而設(shè)計(jì)的特性,如數(shù)據(jù)封裝、異常處理、面向?qū)ο蟮忍匦浴L/SQL是嵌入到Oracle服務(wù)器和開(kāi)發(fā)工具中的,所以具有很高的執(zhí)行效率和同Oracle數(shù)據(jù)庫(kù)的完美結(jié)合。在PL/SQL模塊中可以使用查詢語(yǔ)句和數(shù)據(jù)操縱語(yǔ)句(即進(jìn)行DML操作),這樣就可以編寫(xiě)具有數(shù)據(jù)庫(kù)事務(wù)處理功能的模塊。

至于數(shù)據(jù)定義(DDL)和數(shù)據(jù)控制(DCL)命令的處理,需要通過(guò)Oracle提供的特別的DMBS_SQL包來(lái)進(jìn)行。PL/SQL還可以用來(lái)編寫(xiě)過(guò)程、函數(shù)、包及數(shù)據(jù)庫(kù)觸發(fā)器。過(guò)程和函數(shù)也稱為子程序,在定義時(shí)要給出相應(yīng)的過(guò)程名和函數(shù)名。它們可以存儲(chǔ)在數(shù)據(jù)庫(kù)中成為存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù),并可以由程序來(lái)調(diào)用,它們?cè)诮Y(jié)構(gòu)上同程序模塊類似。

PL/SQL過(guò)程化結(jié)構(gòu)的特點(diǎn)是:可將規(guī)律上相關(guān)的語(yǔ)句組織在一個(gè)程序塊內(nèi);通過(guò)嵌入或調(diào)用子塊,構(gòu)造功能強(qiáng)大的程序;可將一個(gè)繁雜的問(wèn)題分解成為一組便于管理、定義和實(shí)現(xiàn)的小塊。塊結(jié)構(gòu)和基本語(yǔ)法要求

PL/SQL程序的基本單元是塊(BLOCK),塊就是實(shí)現(xiàn)一定功能的規(guī)律模塊。一個(gè)PL/SQL程序由一個(gè)或多個(gè)塊組成。塊有固定的結(jié)構(gòu),也可以嵌套。一個(gè)塊可以包括三個(gè)部分,每個(gè)部分由一個(gè)關(guān)鍵字標(biāo)識(shí)。塊中各部分的作用解釋如下:(1)DECLARE:聲明部分標(biāo)志。(2)BEGIN:可執(zhí)行部分標(biāo)志。

(3)EXCEPTION:異常處理部分標(biāo)志。(4)END;:程序終止標(biāo)志。

在以下的訓(xùn)練中,將使用函數(shù)DBMS_OUTPUT.PUT_LINE顯示輸出結(jié)果。DBMS_OUTPUT是Oracle提供的包,該包有如下三個(gè)用于輸出的函數(shù),用于顯示PL/SQL程序模塊的輸出信息。第一種形式:

DBMS_OUTPUT.PUT(字符串表達(dá)式);

用于輸出字符串,但不換行,括號(hào)中的參數(shù)是要輸出的字符串表達(dá)式。其次種形式:

DBMS_OUTPUT.PUT_LINE(字符串表達(dá)式);

用于輸出一行字符串信息,并換行,括號(hào)中的參數(shù)是要輸出的字符串表達(dá)式。第三種形式:

DBMS_OUTPUT.NEW_LINE;用來(lái)輸出一個(gè)換行,沒(méi)有參數(shù)。

調(diào)用函數(shù)時(shí),在包名后面用一個(gè)點(diǎn)“.〞和函數(shù)名分隔,表示隸屬關(guān)系。要使用該方法顯示輸出數(shù)據(jù),在SQL*Plus環(huán)境下要先執(zhí)行一次如下的環(huán)境設(shè)置命令:

SETSERVEROUTPUTON[SIZEn]

用來(lái)開(kāi)啟DBMS_OUTPUT.PUT_LINE函數(shù)的屏幕輸出功能,系統(tǒng)默認(rèn)狀態(tài)是

OFF。其中,n表示輸出緩沖區(qū)的大小。n的范圍在2000~1000000之間,默認(rèn)為2000。假使輸出內(nèi)容較多,需要使用SIZEn來(lái)設(shè)置較大的輸出緩沖區(qū)。在PL/SQL模塊中可以使用查詢語(yǔ)句和數(shù)據(jù)操縱語(yǔ)句(即進(jìn)行DML操作),所以PL/SQL程序是同SQL語(yǔ)言緊湊結(jié)合在一起的。在PL/SQL程序中,最常見(jiàn)的是使用SELECT語(yǔ)句從數(shù)據(jù)庫(kù)中獲取信息,同直接執(zhí)行SELECT語(yǔ)句不同,在程序中的SELECT語(yǔ)句總是和INTO相協(xié)同,INTO后跟用于接收查詢結(jié)果的變量,形式如下:SELECT列名1,列名2...INTO變量1,變量2...FROM表名WHERE條件;注意:接收查詢結(jié)果的變量類型、順序和個(gè)數(shù)同SELECT語(yǔ)句的字段的類型、順序和個(gè)數(shù)應(yīng)當(dāng)完全一致。并且SELECT語(yǔ)句返回的數(shù)據(jù)必需是一行,否則將引發(fā)系統(tǒng)錯(cuò)誤。當(dāng)程序要接收返回的多行結(jié)果時(shí),可以采用后面介紹的游標(biāo)的方法。

使用INSERT、DELETE和UPDATE的語(yǔ)法沒(méi)有變化,但在程序中要注意判斷語(yǔ)句執(zhí)行的狀態(tài),并使用COMMIT或ROLLBACK進(jìn)行事務(wù)處理。

以下訓(xùn)練包含了依照標(biāo)準(zhǔn)結(jié)構(gòu)書(shū)寫(xiě)的一個(gè)包含SELECT語(yǔ)句的PL/SQL程序例如。

查詢雇員編號(hào)為7788的雇員姓名和工資。步驟1:用SCOTT賬戶登錄SQL*Plus。步驟2:在輸入?yún)^(qū)輸入以下程序:Sql代碼1./*這是一個(gè)簡(jiǎn)單的例如程序*/2.SETSERVEROUTPUTON3.DECLARE--定義部分標(biāo)識(shí)4.v_nameVARCHAR2(10);--定義字符串變量v_name5.v_salNUMBER(5);--定義數(shù)值變量v_sal6.BEGIN--可執(zhí)行部分標(biāo)識(shí)7.SELECTename,sal8.INTOv_name,v_sal9.FROMemp10.WHEREempno=7788;11.--在程序中插入的SQL語(yǔ)句12.DBMS_OUTPUT.PUT_LINE('7788號(hào)雇員是:'||v_name||',工資為:'||to_char(v_sal));13.--輸出雇員名和工資14.END;--終止標(biāo)識(shí)步驟3:按執(zhí)行按鈕或F5快捷鍵執(zhí)行程序。輸出的結(jié)果是:Sql代碼1.7788號(hào)雇員是:SCOTT,工資為:30002.PL/SQL過(guò)程已成功完成。以上程序的作用是,查詢雇員編號(hào)為7788的雇員姓名和工資,然后顯示輸出。

這種方法同直接在SQL環(huán)境下執(zhí)行SELECT語(yǔ)句顯示雇員的姓名和工資比較,程序變得更繁雜。那么兩者畢竟有什么區(qū)別呢?SQL查詢的方法,只限于SQL環(huán)境,并且輸出的格式基本上是固定的。而程序通過(guò)把數(shù)據(jù)取到變量中,可以進(jìn)行繁雜的處理,完成SQL語(yǔ)句不能實(shí)現(xiàn)的功能,并通過(guò)多種方式輸出。

“--〞是解釋符號(hào),后邊是程序的解釋部分。該部分不編譯執(zhí)行,所以在輸入程序時(shí)可以省略。/**/中間也是解釋部分,同“--〞解釋方法不同,它可以跨越多行進(jìn)行解釋。

PL/SQL程序的可執(zhí)行語(yǔ)句、SQL語(yǔ)句和END終止標(biāo)識(shí)都要以分號(hào)終止。數(shù)據(jù)類型

變量的基本數(shù)據(jù)類型同SQL部分的字段數(shù)據(jù)類型相一致,但是也有不同,具體看附件里的圖片。

NUMBER和VARCHAR2是最常用的數(shù)據(jù)類型。

VARCHAR2是可變長(zhǎng)度的字符串,定義時(shí)指明最大長(zhǎng)度,存儲(chǔ)數(shù)據(jù)的長(zhǎng)度是在最大長(zhǎng)度的范圍自動(dòng)調(diào)理的,數(shù)據(jù)前后的空格,Oracle9i會(huì)自動(dòng)將其刪去。NUMBER型可以定義數(shù)值的總長(zhǎng)度和小數(shù)位,如NUMBER(10,3)表示定義一個(gè)寬度為10、小數(shù)位為3的數(shù)值。整個(gè)寬度減去小數(shù)部分的寬度為整數(shù)部分的寬度,所以整數(shù)部分的寬度為7。

CHAR數(shù)據(jù)類型為固定長(zhǎng)度的字符串,定義時(shí)要指明寬度,如不指明,默認(rèn)寬度為1。定長(zhǎng)字符串在顯示輸出時(shí),有對(duì)齊的效果。

DATE類型用于存儲(chǔ)日期數(shù)據(jù),內(nèi)部使用7個(gè)字節(jié)。其中包括年、月、日、小時(shí)、分鐘和秒數(shù)。默認(rèn)的格式為DD-MON-YY,如:07-8月-03表示2023年8月7日。

BOOLEAN為布爾型,用于存儲(chǔ)規(guī)律值,可用于PL/SQL的控制結(jié)構(gòu)。

LOB數(shù)據(jù)類型可以存儲(chǔ)視頻、音頻或圖片,支持隨機(jī)訪問(wèn),存儲(chǔ)的數(shù)據(jù)可以位于數(shù)據(jù)庫(kù)內(nèi)或數(shù)據(jù)庫(kù)外,具體有四種類型:BFILE、BLOB、CLOB、NCLOB。但是操縱大對(duì)象需要使用Oracle提供的DBMS_LOB包。變量定義1.變量定義

變量的作用是用來(lái)存儲(chǔ)數(shù)據(jù),可以在過(guò)程語(yǔ)句中使用。變量在聲明部分可以進(jìn)行初始化,即賦予初值。變量在定義的同時(shí)也可以將其說(shuō)明成常量并賦予固定的值。變量的命名規(guī)則是:以字母開(kāi)頭,后跟其他的字符序列,字符序列中可以包含字母、數(shù)值、下劃線等符號(hào),最大長(zhǎng)度為30個(gè)字符,不區(qū)分大小寫(xiě)。不能使用Oracle的保存字作為變量名。變量名不要和在程序中引用的字段名相重,假使相重,變量名會(huì)被當(dāng)作列名來(lái)使用。

變量的作用范圍是在定義此變量的程序范圍內(nèi),假使程序中包含子塊,則變量在子塊中也有效。但在子塊中定義的變量,僅在定義變量的子塊中有效,在主程序中無(wú)效。

變量定義的方法是:

變量名[CONSTANT]類型標(biāo)識(shí)符[NOTNULL][:=值|DEFAULT值];關(guān)鍵字CONSTANT用來(lái)說(shuō)明定義的變量是常量,假使是常量,必需有賦值部分進(jìn)行賦值。

關(guān)鍵值NOTNULL用來(lái)說(shuō)明變量不能為空?!?或DEFAULT用來(lái)為變量賦初值。

變量可以在程序中使用賦值語(yǔ)句重新賦值。通過(guò)輸出語(yǔ)句可以查看變量的值。

在程序中為變量賦值的方法是:變量名:=值或PL/SQL表達(dá)式;以下是有關(guān)變量定義和賦值的練習(xí)。變量的定義和初始化。輸入和運(yùn)行以下程序:Sql代碼1.SETSERVEROUTPUTON2.DECLARE--聲明部分標(biāo)識(shí)3.v_jobVARCHAR2(9);4.v_countBINARY_INTEGERDEFAULT0;5.v_total_salNUMBER(9,2):=0;6.v_dateDATE:=SYSDATE+7;7.c_tax_rateCONSTANTNUMBER(3,2):=8.25;8.v_validBOOLEANNOTNULL:=TRUE;9.BEGIN10.v_job:='MANAGER';11.--在程序中賦值12.DBMS_OUTPUT.PUT_LINE(v_job);13.--輸出變量v_job的值14.DBMS_OUTPUT.PUT_LINE(v_count);15.--輸出變量v_count的值16.DBMS_OUTPUT.PUT_LINE(v_date);17.--輸出變量v_date的值18.DBMS_OUTPUT.PUT_LINE(c_tax_rate);19.--輸出變量c_tax_rate的值20.END;執(zhí)行結(jié)果:Sql代碼1.MANAGER2.03.18-4月-034.8.255.PL/SQL過(guò)程已成功完成。說(shuō)明:本訓(xùn)練共定義了6個(gè)變量,分別用“:=〞賦值運(yùn)算符或DEFAULT關(guān)鍵字對(duì)變量進(jìn)行了初始化或賦值。其中:c_tax_rate為常量,在數(shù)據(jù)類型前加了“CONSTANT〞關(guān)鍵字;v_valid變量在賦值運(yùn)算符前面加了關(guān)鍵字“NOTNULL〞,強(qiáng)制不能為空。假使變量是布爾型,它的值只能是“TRUE〞、“FALSE〞或“NULL〞。本練習(xí)中的變量v_valid布爾變量的值只能取“TRUE〞或“FALSE〞。2.根據(jù)表的字段定義變量

變量的聲明還可以根據(jù)數(shù)據(jù)庫(kù)表的字段進(jìn)行定義或根據(jù)已經(jīng)定義的變量進(jìn)行定義。方法是在表的字段名或已經(jīng)定義的變量名后加%TYPE,將其當(dāng)作數(shù)據(jù)類型。定義字段變量的方法如下:

變量名表名.字段名%TYPE;

根據(jù)表的字段定義變量。輸入并執(zhí)行以下程序:Sql代碼1.SETSERVEROUTPUTON2.DECLARE3.v_enameemp.ename%TYPE;--根據(jù)字段定義變量4.BEGIN5.SELECTename6.INTOv_ename7.FROMemp8.WHEREempno=7788;9.DBMS_OUTPUT.PUT_LINE(v_ename);10.--輸出變量的值11.END;執(zhí)行結(jié)果:Sql代碼1.SCOTT2.PL/S

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論