• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            PL/SQL是ORACLE對(duì)標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言的擴(kuò)展,ORACLE公司已經(jīng)將PL/SQL整合到ORACLE 服務(wù)器和其他工具中了,近幾年中更多的開發(fā)人員和DBA開始使用PL/SQL,本文將講述PL/SQL基礎(chǔ)語(yǔ)法,結(jié)構(gòu)和組件、以及如何設(shè)計(jì)并執(zhí)行一個(gè)PL/SQL程序。

              PL/SQL的優(yōu)點(diǎn)

              從版本6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的優(yōu)點(diǎn)以及其獨(dú)有的數(shù)據(jù)管理的便利性,那么你很難想象ORACLE缺了PL/SQL的情形。PL/SQL 不是一個(gè)獨(dú)立的產(chǎn)品,他是一個(gè)整合到ORACLE服務(wù)器和ORACLE工具中的技術(shù),可以把PL/SQL看作ORACLE服務(wù)器內(nèi)的一個(gè)引擎,sql語(yǔ)句執(zhí)行者處理單個(gè)的sql語(yǔ)句,PL/SQL引擎處理PL/SQL程序塊。當(dāng)PL/SQL程序塊在PL/SQL引擎處理時(shí),ORACLE服務(wù)器中的SQL語(yǔ)句執(zhí)行器處理pl/sql程序塊中的SQL語(yǔ)句。

              PL/SQL的優(yōu)點(diǎn)如下:

              . PL/SQL是一種高性能的基于事務(wù)處理的語(yǔ)言,能運(yùn)行在任何ORACLE環(huán)境中,支持所有數(shù)據(jù)處理命令。通過使用PL/SQL程序單元處理SQL的數(shù)據(jù)定義和數(shù)據(jù)控制元素。

              . PL/SQL支持所有SQL數(shù)據(jù)類型和所有SQL函數(shù),同時(shí)支持所有ORACLE對(duì)象類型

              . PL/SQL塊可以被命名和存儲(chǔ)在ORACLE服務(wù)器中,同時(shí)也能被其他的PL/SQL程序或SQL命令調(diào)用,任何客戶/服務(wù)器工具都能訪問PL/SQL程序,具有很好的可重用性。

              . 可以使用ORACLE數(shù)據(jù)工具管理存儲(chǔ)在服務(wù)器中的PL/SQL程序的安全性。可以授權(quán)或撤銷數(shù)據(jù)庫(kù)其他用戶訪問PL/SQL程序的能力。

              . PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對(duì)任何ORACLE能夠運(yùn)行的操作系統(tǒng)都是非常便利的

              . 對(duì)于SQL,ORACLE必須在同一時(shí)間處理每一條SQL語(yǔ)句,在網(wǎng)絡(luò)環(huán)境下這就意味作每一個(gè)獨(dú)立的調(diào)用都必須被oracle服務(wù)器處理,這就占用大量的服務(wù)器時(shí)間,同時(shí)導(dǎo)致網(wǎng)絡(luò)擁擠。而PL/SQL是以整個(gè)語(yǔ)句塊發(fā)給服務(wù)器,這就降低了網(wǎng)絡(luò)擁擠。

              PL/SQL塊結(jié)構(gòu)

              PL/SQL是一種塊結(jié)構(gòu)的語(yǔ)言,組成PL/SQL程序的單元是邏輯塊,一個(gè)PL/SQL 程序包含了一個(gè)或多個(gè)邏輯塊,每個(gè)塊都可以劃分為三個(gè)部分。與其他語(yǔ)言相同,變量在使用之前必須聲明,PL/SQL提供了獨(dú)立的專門用于處理異常的部分,下面描述了PL/SQL塊的不同部分:

              聲明部分(Declaration section)

              聲明部分包含了變量和常量的數(shù)據(jù)類型和初始值。這個(gè)部分是由關(guān)鍵字DECLARE開始,如果不需要聲明變量或常量,那么可以忽略這一部分;需要說(shuō)明的是游標(biāo)的聲明也在這一部分。

              執(zhí)行部分(Executable section)

              執(zhí)行部分是PL/SQL塊中的指令部分,由關(guān)鍵字BEGIN開始,所有的可執(zhí)行語(yǔ)句都放在這一部分,其他的PL/SQL塊也可以放在這一部分。

              異常處理部分(Exception section)

              這一部分是可選的,在這一部分中處理異常或錯(cuò)誤,對(duì)異常處理的詳細(xì)討論我們?cè)诤竺孢M(jìn)行。

              PL/SQL塊語(yǔ)法

            [DECLARE]
            ---declaration statements
            BEGIN
            ---executable statements
            [EXCEPTION]
            ---exception statements
            END

              PL/SQL塊中的每一條語(yǔ)句都必須以分號(hào)結(jié)束,SQL語(yǔ)句可以使多行的,但分號(hào)表示該語(yǔ)句的結(jié)束。一行中可以有多條SQL語(yǔ)句,他們之間以分號(hào)分隔。每一個(gè)PL/SQL塊由BEGIN或DECLARE開始,以END結(jié)束。注釋由--標(biāo)示。

              PL/SQL塊的命名和匿名

              PL/SQL程序塊可以是一個(gè)命名的程序塊也可以是一個(gè)匿名程序塊。匿名程序塊可以用在服務(wù)器端也可以用在客戶端。

              命名程序塊可以出現(xiàn)在其他PL/SQL程序塊的聲明部分,這方面比較明顯的是子程序,子程序可以在執(zhí)行部分引用,也可以在異常處理部分引用。

              PL/SQL程序塊可背獨(dú)立編譯并存儲(chǔ)在數(shù)據(jù)庫(kù)中,任何與數(shù)據(jù)庫(kù)相連接的應(yīng)用程序都可以訪問這些存儲(chǔ)的PL/SQL程序塊。ORACLE提供了四種類型的可存儲(chǔ)的程序:

               . 函數(shù)

               . 過程

               . 包

               . 觸發(fā)器

              函數(shù)

              函數(shù)是命名了的、存儲(chǔ)在數(shù)據(jù)庫(kù)中的PL/SQL程序塊。函數(shù)接受零個(gè)或多個(gè)輸入?yún)?shù),有一個(gè)返回值,返回值的數(shù)據(jù)類型在創(chuàng)建函數(shù)時(shí)定義。定義函數(shù)的語(yǔ)法如下:

            FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS
            [local declarations]
            BEGIN
            execute statements
            [EXCEPTION
            exception handlers]
            END [name]

              過程

              存儲(chǔ)過程是一個(gè)PL/SQL程序塊,接受零個(gè)或多個(gè)參數(shù)作為輸入(INPUT)或輸出(OUTPUT)、或既作輸入又作輸出(INOUT),與函數(shù)不同,存儲(chǔ)過程沒有返回值,存儲(chǔ)過程不能由SQL語(yǔ)句直接使用,只能通過EXECUT命令或PL/SQL程序塊內(nèi)部調(diào)用,定義存儲(chǔ)過程的語(yǔ)法如下:

            PROCEDURE name [(parameter[,parameter,...])] IS
            [local declarations]
            BEGIN
            execute statements
            [EXCEPTION
            exception handlers ]
            END [name]

              包(package)

              包其實(shí)就是被組合在一起的相關(guān)對(duì)象的集合,當(dāng)包中任何函數(shù)或存儲(chǔ)過程被調(diào)用,包就被加載入內(nèi)存中,包中的任何函數(shù)或存儲(chǔ)過程的子程序訪問速度將大大加快。
            包由兩個(gè)部分組成:規(guī)范和包主體(body),規(guī)范描述變量、常量、游標(biāo)、和子程序,包體完全定義子程序和游標(biāo)。

              觸發(fā)器(trigger)

              觸發(fā)器與一個(gè)表或數(shù)據(jù)庫(kù)事件聯(lián)系在一起的,當(dāng)一個(gè)觸發(fā)器事件發(fā)生時(shí),定義在表上的觸發(fā)器被觸發(fā)。
            Posted on 2006-09-26 16:49 艾凡赫 閱讀(410) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ORACLE數(shù)據(jù)庫(kù)
            久久精品国产影库免费看| 久久久久se色偷偷亚洲精品av| 国产精品熟女福利久久AV| 欧美国产精品久久高清| 久久婷婷五月综合国产尤物app| 99久久精品国产一区二区三区| 一级a性色生活片久久无| 久久久久夜夜夜精品国产| 色偷偷88欧美精品久久久| 91麻豆精品国产91久久久久久| 色青青草原桃花久久综合| 伊人久久大香线蕉影院95| 午夜人妻久久久久久久久| 免费精品久久久久久中文字幕| 久久精品草草草| 亚洲色大成网站www久久九| 蜜臀久久99精品久久久久久| 久久最新精品国产| 国产午夜免费高清久久影院| 人妻无码αv中文字幕久久琪琪布| AA级片免费看视频久久| 精品久久久久久久无码| 久久久久亚洲av成人网人人软件| 国产精品99久久久久久董美香| 国产成人久久精品激情| 一本色道久久综合亚洲精品| 日韩va亚洲va欧美va久久| 2020最新久久久视精品爱| 狠狠干狠狠久久| 国产精品久久久久无码av| 久久精品中文无码资源站| 日日噜噜夜夜狠狠久久丁香五月 | 午夜欧美精品久久久久久久| 亚洲人成无码网站久久99热国产| 理论片午午伦夜理片久久| 国产99久久九九精品无码| 久久91精品久久91综合| 伊人热人久久中文字幕| 国产99久久九九精品无码| 久久乐国产精品亚洲综合| 久久91这里精品国产2020|