版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——oraclePLSQL的基本構(gòu)成,塊結(jié)構(gòu)和基本語法要求,(精)oraclePL/SQL的基本構(gòu)成,塊結(jié)構(gòu)和基本語法要求,數(shù)據(jù)類型,變量定義,運算符和函數(shù)
關(guān)鍵字:oraclepl/sql基本構(gòu)成塊結(jié)構(gòu)基本語法要求數(shù)據(jù)類型變量定義運算符函數(shù)特點
PL/SQL語言是SQL語言的擴展,具有為程序開發(fā)而設(shè)計的特性,如數(shù)據(jù)封裝、異常處理、面向?qū)ο蟮忍匦?。PL/SQL是嵌入到Oracle服務(wù)器和開發(fā)工具中的,所以具有很高的執(zhí)行效率和同Oracle數(shù)據(jù)庫的完美結(jié)合。在PL/SQL模塊中可以使用查詢語句和數(shù)據(jù)操縱語句(即進行DML操作),這樣就可以編寫具有數(shù)據(jù)庫事務(wù)處理功能的模塊。
至于數(shù)據(jù)定義(DDL)和數(shù)據(jù)控制(DCL)命令的處理,需要通過Oracle提供的特別的DMBS_SQL包來進行。PL/SQL還可以用來編寫過程、函數(shù)、包及數(shù)據(jù)庫觸發(fā)器。過程和函數(shù)也稱為子程序,在定義時要給出相應(yīng)的過程名和函數(shù)名。它們可以存儲在數(shù)據(jù)庫中成為存儲過程和存儲函數(shù),并可以由程序來調(diào)用,它們在結(jié)構(gòu)上同程序模塊類似。
PL/SQL過程化結(jié)構(gòu)的特點是:可將規(guī)律上相關(guān)的語句組織在一個程序塊內(nèi);通過嵌入或調(diào)用子塊,構(gòu)造功能強大的程序;可將一個繁雜的問題分解成為一組便于管理、定義和實現(xiàn)的小塊。塊結(jié)構(gòu)和基本語法要求
PL/SQL程序的基本單元是塊(BLOCK),塊就是實現(xiàn)一定功能的規(guī)律模塊。一個PL/SQL程序由一個或多個塊組成。塊有固定的結(jié)構(gòu),也可以嵌套。一個塊可以包括三個部分,每個部分由一個關(guān)鍵字標(biāo)識。塊中各部分的作用解釋如下:(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提供的包,該包有如下三個用于輸出的函數(shù),用于顯示PL/SQL程序模塊的輸出信息。第一種形式:
DBMS_OUTPUT.PUT(字符串表達(dá)式);
用于輸出字符串,但不換行,括號中的參數(shù)是要輸出的字符串表達(dá)式。其次種形式:
DBMS_OUTPUT.PUT_LINE(字符串表達(dá)式);
用于輸出一行字符串信息,并換行,括號中的參數(shù)是要輸出的字符串表達(dá)式。第三種形式:
DBMS_OUTPUT.NEW_LINE;用來輸出一個換行,沒有參數(shù)。
調(diào)用函數(shù)時,在包名后面用一個點“.〞和函數(shù)名分隔,表示隸屬關(guān)系。要使用該方法顯示輸出數(shù)據(jù),在SQL*Plus環(huán)境下要先執(zhí)行一次如下的環(huán)境設(shè)置命令:
SETSERVEROUTPUTON[SIZEn]
用來開啟DBMS_OUTPUT.PUT_LINE函數(shù)的屏幕輸出功能,系統(tǒng)默認(rèn)狀態(tài)是
OFF。其中,n表示輸出緩沖區(qū)的大小。n的范圍在2000~1000000之間,默認(rèn)為2000。假使輸出內(nèi)容較多,需要使用SIZEn來設(shè)置較大的輸出緩沖區(qū)。在PL/SQL模塊中可以使用查詢語句和數(shù)據(jù)操縱語句(即進行DML操作),所以PL/SQL程序是同SQL語言緊湊結(jié)合在一起的。在PL/SQL程序中,最常見的是使用SELECT語句從數(shù)據(jù)庫中獲取信息,同直接執(zhí)行SELECT語句不同,在程序中的SELECT語句總是和INTO相協(xié)同,INTO后跟用于接收查詢結(jié)果的變量,形式如下:SELECT列名1,列名2...INTO變量1,變量2...FROM表名WHERE條件;注意:接收查詢結(jié)果的變量類型、順序和個數(shù)同SELECT語句的字段的類型、順序和個數(shù)應(yīng)當(dāng)完全一致。并且SELECT語句返回的數(shù)據(jù)必需是一行,否則將引發(fā)系統(tǒng)錯誤。當(dāng)程序要接收返回的多行結(jié)果時,可以采用后面介紹的游標(biāo)的方法。
使用INSERT、DELETE和UPDATE的語法沒有變化,但在程序中要注意判斷語句執(zhí)行的狀態(tài),并使用COMMIT或ROLLBACK進行事務(wù)處理。
以下訓(xùn)練包含了依照標(biāo)準(zhǔn)結(jié)構(gòu)書寫的一個包含SELECT語句的PL/SQL程序例如。
查詢雇員編號為7788的雇員姓名和工資。步驟1:用SCOTT賬戶登錄SQL*Plus。步驟2:在輸入?yún)^(qū)輸入以下程序:Sql代碼1./*這是一個簡單的例如程序*/2.SETSERVEROUTPUTON3.DECLARE--定義部分標(biāo)識4.v_nameVARCHAR2(10);--定義字符串變量v_name5.v_salNUMBER(5);--定義數(shù)值變量v_sal6.BEGIN--可執(zhí)行部分標(biāo)識7.SELECTename,sal8.INTOv_name,v_sal9.FROMemp10.WHEREempno=7788;11.--在程序中插入的SQL語句12.DBMS_OUTPUT.PUT_LINE('7788號雇員是:'||v_name||',工資為:'||to_char(v_sal));13.--輸出雇員名和工資14.END;--終止標(biāo)識步驟3:按執(zhí)行按鈕或F5快捷鍵執(zhí)行程序。輸出的結(jié)果是:Sql代碼1.7788號雇員是:SCOTT,工資為:30002.PL/SQL過程已成功完成。以上程序的作用是,查詢雇員編號為7788的雇員姓名和工資,然后顯示輸出。
這種方法同直接在SQL環(huán)境下執(zhí)行SELECT語句顯示雇員的姓名和工資比較,程序變得更繁雜。那么兩者畢竟有什么區(qū)別呢?SQL查詢的方法,只限于SQL環(huán)境,并且輸出的格式基本上是固定的。而程序通過把數(shù)據(jù)取到變量中,可以進行繁雜的處理,完成SQL語句不能實現(xiàn)的功能,并通過多種方式輸出。
“--〞是解釋符號,后邊是程序的解釋部分。該部分不編譯執(zhí)行,所以在輸入程序時可以省略。/**/中間也是解釋部分,同“--〞解釋方法不同,它可以跨越多行進行解釋。
PL/SQL程序的可執(zhí)行語句、SQL語句和END終止標(biāo)識都要以分號終止。數(shù)據(jù)類型
變量的基本數(shù)據(jù)類型同SQL部分的字段數(shù)據(jù)類型相一致,但是也有不同,具體看附件里的圖片。
NUMBER和VARCHAR2是最常用的數(shù)據(jù)類型。
VARCHAR2是可變長度的字符串,定義時指明最大長度,存儲數(shù)據(jù)的長度是在最大長度的范圍自動調(diào)理的,數(shù)據(jù)前后的空格,Oracle9i會自動將其刪去。NUMBER型可以定義數(shù)值的總長度和小數(shù)位,如NUMBER(10,3)表示定義一個寬度為10、小數(shù)位為3的數(shù)值。整個寬度減去小數(shù)部分的寬度為整數(shù)部分的寬度,所以整數(shù)部分的寬度為7。
CHAR數(shù)據(jù)類型為固定長度的字符串,定義時要指明寬度,如不指明,默認(rèn)寬度為1。定長字符串在顯示輸出時,有對齊的效果。
DATE類型用于存儲日期數(shù)據(jù),內(nèi)部使用7個字節(jié)。其中包括年、月、日、小時、分鐘和秒數(shù)。默認(rèn)的格式為DD-MON-YY,如:07-8月-03表示2023年8月7日。
BOOLEAN為布爾型,用于存儲規(guī)律值,可用于PL/SQL的控制結(jié)構(gòu)。
LOB數(shù)據(jù)類型可以存儲視頻、音頻或圖片,支持隨機訪問,存儲的數(shù)據(jù)可以位于數(shù)據(jù)庫內(nèi)或數(shù)據(jù)庫外,具體有四種類型:BFILE、BLOB、CLOB、NCLOB。但是操縱大對象需要使用Oracle提供的DBMS_LOB包。變量定義1.變量定義
變量的作用是用來存儲數(shù)據(jù),可以在過程語句中使用。變量在聲明部分可以進行初始化,即賦予初值。變量在定義的同時也可以將其說明成常量并賦予固定的值。變量的命名規(guī)則是:以字母開頭,后跟其他的字符序列,字符序列中可以包含字母、數(shù)值、下劃線等符號,最大長度為30個字符,不區(qū)分大小寫。不能使用Oracle的保存字作為變量名。變量名不要和在程序中引用的字段名相重,假使相重,變量名會被當(dāng)作列名來使用。
變量的作用范圍是在定義此變量的程序范圍內(nèi),假使程序中包含子塊,則變量在子塊中也有效。但在子塊中定義的變量,僅在定義變量的子塊中有效,在主程序中無效。
變量定義的方法是:
變量名[CONSTANT]類型標(biāo)識符[NOTNULL][:=值|DEFAULT值];關(guān)鍵字CONSTANT用來說明定義的變量是常量,假使是常量,必需有賦值部分進行賦值。
關(guān)鍵值NOTNULL用來說明變量不能為空?!?或DEFAULT用來為變量賦初值。
變量可以在程序中使用賦值語句重新賦值。通過輸出語句可以查看變量的值。
在程序中為變量賦值的方法是:變量名:=值或PL/SQL表達(dá)式;以下是有關(guān)變量定義和賦值的練習(xí)。變量的定義和初始化。輸入和運行以下程序:Sql代碼1.SETSERVEROUTPUTON2.DECLARE--聲明部分標(biāo)識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過程已成功完成。說明:本訓(xùn)練共定義了6個變量,分別用“:=〞賦值運算符或DEFAULT關(guān)鍵字對變量進行了初始化或賦值。其中:c_tax_rate為常量,在數(shù)據(jù)類型前加了“CONSTANT〞關(guān)鍵字;v_valid變量在賦值運算符前面加了關(guān)鍵字“NOTNULL〞,強制不能為空。假使變量是布爾型,它的值只能是“TRUE〞、“FALSE〞或“NULL〞。本練習(xí)中的變量v_valid布爾變量的值只能取“TRUE〞或“FALSE〞。2.根據(jù)表的字段定義變量
變量的聲明還可以根據(jù)數(shù)據(jù)庫表的字段進行定義或根據(jù)已經(jīng)定義的變量進行定義。方法是在表的字段名或已經(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國際會議及展覽活動宣傳推廣合同3篇
- 二零二五年度建筑管道系統(tǒng)安裝服務(wù)合同2篇
- 2025年度個人委托新能源儲能技術(shù)投資合同3篇
- 商鋪售后返租合同中的履約保障與爭議解決(2025年版)2篇
- 二零二五年度建筑玻璃幕墻工程勞務(wù)分包及安全評估協(xié)議3篇
- 2025年度氣體滅火系統(tǒng)研發(fā)與生產(chǎn)合作協(xié)議
- 二零二五年度城市綠化帶植物病蟲害防治合同3篇
- 2025版壓路機設(shè)備翻新改造與租賃合同范本3篇
- 二零二五年度商用機動車買賣合同范本3篇
- 高速公路交通安全宣傳教育活動合同(二零二五版)3篇
- 場地委托授權(quán)
- 2024年四川省成都市龍泉驛區(qū)中考數(shù)學(xué)二診試卷(含答案)
- 項目工地春節(jié)放假安排及安全措施
- 印染廠安全培訓(xùn)課件
- 紅色主題研學(xué)課程設(shè)計
- 胸外科手術(shù)圍手術(shù)期處理
- 裝置自動控制的先進性說明
- 《企業(yè)管理課件:團隊管理知識點詳解PPT》
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)二 軟文的寫作
- 英語詞匯教學(xué)中落實英語學(xué)科核心素養(yǎng)
- 《插畫設(shè)計》課程標(biāo)準(zhǔn)
評論
0/150
提交評論