国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

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

2024-07-21 02:40:37
字體:
供稿:網(wǎng)友
什么是PL/SQL程序

    前面第4章學(xué)習(xí)的標(biāo)準(zhǔn)化的SQL語言對數(shù)據(jù)庫進(jìn)行各種操作,每次只能執(zhí)行一條語句,語句以英文的分號“;”為結(jié)束標(biāo)識,這樣使用起來很不方便,同時效率較低,這是因為Oracle數(shù)據(jù)庫系統(tǒng)不像VB、VC這樣的程序設(shè)計語言,它側(cè)重于后臺數(shù)據(jù)庫的治理,因此提供的編程能力較弱,而結(jié)構(gòu)化編程語言對數(shù)據(jù)庫的支持能力又較弱,假如一些稍微復(fù)雜點(diǎn)的治理任務(wù)都要借助編程語言來實現(xiàn)的話,這對治理員來講是很大的負(fù)擔(dān)。
    正是在這種需求的驅(qū)使下,從Oracle 6開始,Oracle公司在標(biāo)準(zhǔn)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程序塊的主要特點(diǎn)如下。
    具有模塊化的結(jié)構(gòu)。
    使用過程化語言控制結(jié)構(gòu)。
    能夠進(jìn)行錯誤處理。
    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用戶默認(rèn)的表空間為USERS,因此,要想使該用戶能夠使用表空間建立數(shù)據(jù)方案對象,必須首先給其賦予名為“RESOURCE”的角色。
    (2)以system用戶、SYSDBA身份登錄數(shù)據(jù)庫后,在【企業(yè)治理器】中按照修改用戶的步驟進(jìn)行操作,直到出現(xiàn)如圖9.1所示的編輯用戶的【角色】選項卡。
    在【可用】下拉列表框中選擇“RESOURCE”,單擊PL/SQL程序結(jié)構(gòu)按鈕將其添加到【已授予】列表框中。【默認(rèn)值】單元格被選中,單擊“確定”按鈕。
PL/SQL程序結(jié)構(gòu)
    (3)讀者也可以在【SQLPlus Worksheet】中直接執(zhí)行如下SQL代碼完成上述操作。
    ―――――――――――――――――――――――――――――――――――――
    GRANT "RESOURCE" TO "TEMPUSER";
    ALTER USER "TEMPUSER" DEFAULT ROLE ALL
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/grantrole.sql。
    (4)按照創(chuàng)建數(shù)據(jù)表的操作步驟進(jìn)行,直到出現(xiàn)如圖9.2所示的創(chuàng)建表的【一般信息】選項卡。
    在【名稱】文本框中輸入“testable”。
    在【方案】下拉列表框中選擇“tempuser”。
    在【表空間】下拉列表框中選擇“users”。
    選擇【表】/【標(biāo)準(zhǔn)】單選鈕。
    選擇【定義列】單選鈕。
    在【表列定義區(qū)】中輸入兩個數(shù)據(jù)列的定義。
    完成設(shè)置后單擊PL/SQL程序結(jié)構(gòu)按鈕。
PL/SQL程序結(jié)構(gòu)
    (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。
PL/SQL程序結(jié)構(gòu)
    (7)在【SQLPlus Worksheet】中執(zhí)行下列語句,查詢插入的數(shù)據(jù),結(jié)果如圖9.4所示。
    ―――――――――――――――――――――――――――――――――――――
    select * from tempuser.testtable;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/selecttesttable.sql。
PL/SQL程序結(jié)構(gòu)
    對完成上述數(shù)據(jù)插入過程的PL/SQL程序的分析如表9.1所示。
表9.1 PL/SQL實例代碼分析程序代碼說明set serveroutput on答應(yīng)服務(wù)器輸出declare定義部分標(biāo)識maxrecords constant int:=100;定義maxrecords為整型常量100i int :=1;定義i為整型值變量,初值為1Begin執(zhí)行部分標(biāo)識for i in 1..maxrecords loopi從1循環(huán)到maxrecordsInsert 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)默認(rèn)的程序包,put_line為包中定義的方法,功能是輸出信息;在Oracle中,所有對數(shù)據(jù)庫數(shù)據(jù)的更改并沒有直接操作數(shù)據(jù)庫,而是放在叫工作區(qū)的內(nèi)存里,只有在commit語句執(zhí)行后,才發(fā)生永久更改。

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黔江区| 驻马店市| 平原县| 贵德县| 永新县| 邵东县| 玛多县| 娄烦县| 虞城县| 温泉县| 崇礼县| 来安县| 新昌县| 安图县| 闸北区| 黄梅县| 西华县| 都安| 泸定县| 阳信县| 邯郸县| 洪江市| 云霄县| 白银市| 岗巴县| 汾阳市| 博爱县| 甘谷县| 历史| 乐昌市| 慈溪市| 林口县| 建湖县| 岱山县| 澳门| 舟曲县| 绥阳县| 临湘市| 察雅县| 遂平县| 温宿县|