<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    PL/SQL程序結(jié)構(gòu)學(xué)習(xí) ------from-//ddvip.com

     

    從Oracle 6開始,Oracle公司在標準SQL語言的基礎(chǔ)上發(fā)展了自己的PL/SQL(Procedural Language/SQL,過程化SQL語言)語言,將變量、控制結(jié)構(gòu)、過程和函數(shù)等結(jié)構(gòu)化程序設(shè)計的要素引入了SQL語言中,這樣就能夠編制比較復(fù)雜的 SQL程序了,利用PL/SQL語言編寫的程序也稱為PL/SQL程序塊。
        PL/SQL程序塊的主要特點如下。
        具有模塊化的結(jié)構(gòu)。
        使用過程化語言控制結(jié)構(gòu)。
        能夠進行錯誤處理。
        PL/SQL程序塊只能在【SQL Plus】、【SQLPlus Worksheet】等工具支持下以解釋型方式執(zhí)行,不能編譯成可執(zhí)行文件,脫離支撐環(huán)境執(zhí)行。

    PL/SQL實例分析

        下面將為前面建立的tempuser用戶建立一個名為testtable的數(shù)據(jù)表。
        在該表中有recordnumber整數(shù)型字段和currentdate時間型字段,編制一個PL/SQL程序完成向該表中自動輸入100個記錄,要求recordnumber字段從1到100,currentdate字段為當(dāng)前系統(tǒng)時間。
        (1)前面建立的tempuser用戶默認的表空間為USERS,因此,要想使該用戶能夠使用表空間建立數(shù)據(jù)方案對象,必須首先給其賦予名為“RESOURCE”的角色。
        (2)以system用戶、SYSDBA身份登錄數(shù)據(jù)庫后,在【企業(yè)管理器】中按照修改用戶的步驟進行操作,直到出現(xiàn)如圖9.1所示的編輯用戶的【角色】選項卡。
        在【可用】下拉列表框中選擇“RESOURCE”,單擊按鈕將其添加到【已授予】列表框中。【默認值】單元格被選中,單擊“確定”按鈕。

        (3)讀者也可以在【SQLPlus Worksheet】中直接執(zhí)行如下SQL代碼完成上述操作。
        ―――――――――――――――――――――――――――――――――――――
        GRANT "RESOURCE" TO "TEMPUSER";
        ALTER USER "TEMPUSER" DEFAULT ROLE ALL
        ―――――――――――――――――――――――――――――――――――――
        【配套程序位置】:第9章\grantrole.sql。
        (4)按照創(chuàng)建數(shù)據(jù)表的操作步驟進行,直到出現(xiàn)如圖9.2所示的創(chuàng)建表的【一般信息】選項卡。
        在【名稱】文本框中輸入“testable”。
        在【方案】下拉列表框中選擇“tempuser”。
        在【表空間】下拉列表框中選擇“users”。
        選擇【表】/【標準】單選鈕。
        選擇【定義列】單選鈕。
        在【表列定義區(qū)】中輸入兩個數(shù)據(jù)列的定義。
        完成設(shè)置后單擊按鈕。

        (5)讀者也可以在【SQLPlus Worksheet】中直接執(zhí)行如下SQL代碼完成上述操作。
        ―――――――――――――――――――――――――――――――――――――
        CREATE TABLE "TEMPUSER"."TESTTABLE" ("RECORDNUMBER" NUMBER(4) NOT
            NULL, "CURRENTDATE" DATE NOT NULL)
            TABLESPACE "USERS"
        ―――――――――――――――――――――――――――――――――――――
        【配套程序位置】:第9章\createtesttable.sql。
        (6)以tempuser用戶身份登錄【SQLPlus Worksheet】,執(zhí)行下列SQL代碼完成向數(shù)據(jù)表tempuser.testable中輸入100個記錄的功能。執(zhí)行結(jié)果如圖9.3所示。
        ―――――――――――――――――――――――――――――――――――――
        set serveroutput on
        declare
            maxrecords constant int:=100;
            i int :=1;
        begin
            for i in 1..maxrecords loop
               insert into tempuser.testtable(recordnumber,currentdate)
               values(i,sysdate);
            end loop;
        dbms_output.put_line('成功錄入數(shù)據(jù)!');
        commit;
        end;
        ―――――――――――――――――――――――――――――――――――――
        【配套程序位置】:第9章\inserttesttable.sql。

        (7)在【SQLPlus Worksheet】中執(zhí)行下列語句,查詢插入的數(shù)據(jù),結(jié)果如圖9.4所示。
        ―――――――――――――――――――――――――――――――――――――
        select * from tempuser.testtable;
        ―――――――――――――――――――――――――――――――――――――
        【配套程序位置】:第9章\selecttesttable.sql。

        對完成上述數(shù)據(jù)插入過程的PL/SQL程序的分析如表9.1所示。
    表9.1 PL/SQL實例代碼分析

    程序代碼 說明
    set serveroutput on 允許服務(wù)器輸出
    declare 定義部分標識
    maxrecords constant int:=100; 定義maxrecords為整型常量100
    i int :=1; 定義i為整型值變量,初值為1
    Begin 執(zhí)行部分標識
    for i in 1..maxrecords loop i從1循環(huán)到maxrecords
    Insert into tempuser.testtable(recordnumber,currentdate) values (i,sysdate); 向數(shù)據(jù)表中插入數(shù)據(jù)
    end loop; 結(jié)束循環(huán)
    dbms_output.put_line('成功錄入數(shù)據(jù)!'); 顯示成功錄入數(shù)據(jù)信息
    commit; 提交結(jié)果
    end; 結(jié)束執(zhí)行

         表中的sysdate為系統(tǒng)時間函數(shù);dbms_output為系統(tǒng)默認的程序包,put_line為包中定義的方法,功能是輸出信息;在Oracle 中,所有對數(shù)據(jù)庫數(shù)據(jù)的更改并沒有直接操作數(shù)據(jù)庫,而是放在叫工作區(qū)的內(nèi)存里,只有在commit語句執(zhí)行后,才發(fā)生永久更改。

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

        結(jié)合上述實例進行分析,完整的PL/SQL程序結(jié)構(gòu)可以分為3個部分。
        1. 定義部分
        以Declare為標識,在該部分中定義程序中要使用的常量、變量、游標和例外處理名稱,PL/SQL程序中使用的所有定義必須在該部分集中定義,而在高級語言里變量可以在程序執(zhí)行過程中定義。
        2. 執(zhí)行部分
        以begin為開始標識,以end為結(jié)束標識。該部分是每個PL/SQL程序所必備的,包含了對數(shù)據(jù)庫的操作語句和各種流程控制語句。
        3. 異常處理部分
        該部分包含在執(zhí)行部分里面,以exception為標識,對程序執(zhí)行中產(chǎn)生的異常情況進行處理。一個完整的PL/SQL程序的總體結(jié)構(gòu)如圖9.5所示。

        有的程序比較簡單,往往省略異常處理部分。

    posted on 2005-11-05 13:24 大樹 閱讀(266) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計

    公告

    本期話題
    能源行業(yè)資產(chǎn)管理咨詢
    資產(chǎn)管理信息化方案提供
    資產(chǎn)管理相關(guān)行業(yè)培訓(xùn)
    大型企業(yè)軟件體系架構(gòu)整合
    資產(chǎn)管理信息系統(tǒng)實施
    信息集成
    信息孤島

    常用鏈接

    留言簿(6)

    隨筆檔案(45)

    文章檔案(7)

    新聞檔案(1)

    相冊

    wallgate management consulting

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 夜色阁亚洲一区二区三区| 久久99青青精品免费观看| 日韩免费视频播播| 亚洲精品无码不卡在线播放| 成人免费午夜无码视频| 成人亚洲国产va天堂| 免费很黄很色裸乳在线观看| 亚洲av成人一区二区三区观看在线| 18级成人毛片免费观看| 亚洲乱码在线观看| 天天操夜夜操免费视频| 亚洲国产日韩在线| 成人性生免费视频| 亚洲中文字幕在线观看| a级片免费在线观看| 亚洲AV成人片色在线观看高潮| 91精品国产免费久久国语蜜臀| 亚洲精品免费在线视频| 成全影视免费观看大全二| 国产精品亚洲一区二区三区| 99久久久国产精品免费蜜臀| 亚洲三级中文字幕| 国产乱子影视频上线免费观看| 一级人做人爰a全过程免费视频| 亚洲欧洲成人精品香蕉网| 最近免费中文在线视频| jiz zz在亚洲| 亚洲日韩精品无码一区二区三区| 91精品国产免费久久国语麻豆| 亚洲日本一线产区和二线产区对比| 亚洲国产精品13p| 99视频有精品视频免费观看| 亚洲男人的天堂网站| 国产综合亚洲专区在线| 国产高清免费视频| 亚洲黄色在线观看视频| 可以免费观看的毛片| 亚洲成_人网站图片| 亚洲人成网77777亚洲色| 美女网站免费福利视频| 国产免费播放一区二区|