• <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對標準數據庫語言的擴展,ORACLE公司已經將PL/SQL整合到ORACLE 服務器和其他工具中了,近幾年中更多的開發人員和DBA開始使用PL/SQL,本文將講述PL/SQL基礎語法,結構和組件、以及如何設計并執行一個PL/SQL程序。

              PL/SQL的優點

              從版本6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的優點以及其獨有的數據管理的便利性,那么你很難想象ORACLE缺了PL/SQL的情形。PL/SQL 不是一個獨立的產品,他是一個整合到ORACLE服務器和ORACLE工具中的技術,可以把PL/SQL看作ORACLE服務器內的一個引擎,sql語句執行者處理單個的sql語句,PL/SQL引擎處理PL/SQL程序塊。當PL/SQL程序塊在PL/SQL引擎處理時,ORACLE服務器中的SQL語句執行器處理pl/sql程序塊中的SQL語句。

              PL/SQL的優點如下:

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

              . PL/SQL支持所有SQL數據類型和所有SQL函數,同時支持所有ORACLE對象類型

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

              . 可以使用ORACLE數據工具管理存儲在服務器中的PL/SQL程序的安全性。可以授權或撤銷數據庫其他用戶訪問PL/SQL程序的能力。

              . PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對任何ORACLE能夠運行的操作系統都是非常便利的

              . 對于SQL,ORACLE必須在同一時間處理每一條SQL語句,在網絡環境下這就意味作每一個獨立的調用都必須被oracle服務器處理,這就占用大量的服務器時間,同時導致網絡擁擠。而PL/SQL是以整個語句塊發給服務器,這就降低了網絡擁擠。

              PL/SQL塊結構

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

              聲明部分(Declaration section)

              聲明部分包含了變量和常量的數據類型和初始值。這個部分是由關鍵字DECLARE開始,如果不需要聲明變量或常量,那么可以忽略這一部分;需要說明的是游標的聲明也在這一部分。

              執行部分(Executable section)

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

              異常處理部分(Exception section)

              這一部分是可選的,在這一部分中處理異常或錯誤,對異常處理的詳細討論我們在后面進行。

              PL/SQL塊語法

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

              PL/SQL塊中的每一條語句都必須以分號結束,SQL語句可以使多行的,但分號表示該語句的結束。一行中可以有多條SQL語句,他們之間以分號分隔。每一個PL/SQL塊由BEGIN或DECLARE開始,以END結束。注釋由--標示。

              PL/SQL塊的命名和匿名

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

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

              PL/SQL程序塊可背獨立編譯并存儲在數據庫中,任何與數據庫相連接的應用程序都可以訪問這些存儲的PL/SQL程序塊。ORACLE提供了四種類型的可存儲的程序:

               . 函數

               . 過程

               . 包

               . 觸發器

              函數

              函數是命名了的、存儲在數據庫中的PL/SQL程序塊。函數接受零個或多個輸入參數,有一個返回值,返回值的數據類型在創建函數時定義。定義函數的語法如下:

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

              過程

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

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

              包(package)

              包其實就是被組合在一起的相關對象的集合,當包中任何函數或存儲過程被調用,包就被加載入內存中,包中的任何函數或存儲過程的子程序訪問速度將大大加快。
            包由兩個部分組成:規范和包主體(body),規范描述變量、常量、游標、和子程序,包體完全定義子程序和游標。

              觸發器(trigger)

              觸發器與一個表或數據庫事件聯系在一起的,當一個觸發器事件發生時,定義在表上的觸發器被觸發。
            Posted on 2006-09-26 16:49 艾凡赫 閱讀(416) 評論(0)  編輯 收藏 引用 所屬分類: ORACLE數據庫
            漂亮人妻被中出中文字幕久久 | 久久久久亚洲Av无码专| 青青草原综合久久大伊人| 久久久久久精品免费看SSS| 亚洲中文久久精品无码ww16| 久久久无码精品亚洲日韩按摩 | 色综合久久综合网观看| 久久97久久97精品免视看| 亚洲人成网站999久久久综合| 国色天香久久久久久久小说| 精品国产一区二区三区久久| 手机看片久久高清国产日韩| 久久亚洲精品国产精品| 久久午夜福利电影| 国内精品久久久久| 久久天天躁狠狠躁夜夜躁2014| 九九精品99久久久香蕉| 亚洲国产精品一区二区三区久久 | 久久国产精品99久久久久久老狼| 思思久久好好热精品国产| 91精品久久久久久无码| 国色天香久久久久久久小说 | 亚洲国产精品久久| 久久久女人与动物群交毛片| 国内精品伊人久久久久网站| 国内精品人妻无码久久久影院导航 | 亚洲欧美久久久久9999| 精品免费tv久久久久久久| 久久综合狠狠综合久久激情 | 伊人久久大香线蕉亚洲| 伊人热热久久原色播放www| 99热热久久这里只有精品68| 99精品国产在热久久| 久久人人爽人人爽人人片av高请| 青青青青久久精品国产h久久精品五福影院1421| 亚洲国产精品久久久天堂| 亚洲伊人久久成综合人影院 | 97久久国产亚洲精品超碰热 | 精品久久香蕉国产线看观看亚洲| 日产精品久久久一区二区| 性欧美大战久久久久久久久|