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

首頁 > 開發 > 綜合 > 正文

PL/SQL過程

2024-07-21 02:13:22
字體:
來源:轉載
供稿:網友


 
    要想利用pl/sql程序完成比較完整的數據庫任務,需要進一步學習一些高級設計要素的內容。前面編寫執行的pl/sql程序,共同的特點是沒有名稱,只能存儲為文件,然后通過執行文件的方式執行,因此稱為無名塊。與此對應的是在pl/sql中也引入了高級程序設計的一些概念,其中最重要的就是過程。
    過程就是高級程序設計語言中的模塊的概念,將一些內部聯系的命令組成一個個過程,通過參數在過程之間傳遞數據是模塊化設計思想的重要內容。

創建過程

    1. 過程的語法結構
    完整的過程結構如下:
    create or replace procedure 過程名 as
        聲明語句段;
    begin
        執行語句段;
    exception
        異常處理語句段;
    end;
    2. 過程的特點
    過程是有名稱的程序塊,as關鍵詞代替了無名塊的declare。
    3. 創建過程實例
    在【sqlplus worksheet】中執行下列pl/sql程序,該程序將創建名為tempprocedure的過程,create是創建過程的標識符,replace表示若同名過程存在將覆蓋原過程。該過程定義了一個變量,其類型和testtable數據表中的currentdate字段類型相同,都是日期型,將數據表中的recordnumber字段為88的currentdate字段內容送入變量中,然后輸出結果。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    create or replace procedure tempuser.tempprocedure as
      tempdate tempuser.testtable.currentdate%type;
    begin
      select currentdate
      into tempdate
      from testtable
      where recordnumber=88;
      dbms_output.put_line(to_char(tempdate));
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ createprocedure.sql。
    執行結果如圖9.41所示。


查詢過程

    登錄【企業管理器】,在【管理目標導航樹】里選擇【網絡】/【數據庫】/【myoracle.mynet】/【方案】/【過程】/【tempuser】選項,出現如圖9.42所示的創建好的過程。


修改過程

    (1)在【sqlplus worksheet】的【菜單欄】選擇【文件】/【打開】菜單命令,將創建過程的createprocedure.sql文件調出進行修改,修改完畢后重新執行創建過程。
    (2)在【企業管理器】里選中要修改的過程,用鼠標右鍵單擊,在出現的快捷菜單里選擇【查看/編輯詳細資料】選項,如圖9.43所示。
    (3)出現如圖9.44所示的編輯過程的【一般信息】選項卡。在【文本編輯區】可以編輯該過程,單擊“確定”按鈕將更新該過程,單擊“編譯”按鈕將編譯該過程的 pl/sql 源代碼,使該過程可以在數據庫中存儲和執行。


執行過程

    要執行創建的過程,必須通過主程序來調用過程。
    在【sqlplus worksheet】中執行下列pl/sql程序,執行結果如圖9.45所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    begin
        tempprocedure;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ executeprocedure.sql。

    在oracle中,創建好的過程可以被任何程序調用。

帶參數的過程

    前面介紹的過程沒有參數,主程序和過程沒有數據的傳遞,下面介紹帶參數的過程的設計和使用。
    1. 參數類型
    在pl/sql過程中,可以有3種類型的參數。
    in參數:讀入參數,主程序向過程傳遞參數值。
    out參數:讀出參數,過程向主程序傳遞參數值。
    in out 參數:雙向參數,過程與主程序雙向交流數據。
    2. 定義帶參數的過程
    在下面的pl/sql程序代碼中,將創建三個調用參數。
    tempdeptno:類型為in,與scott.dept.deptno的類型一致,為數值型。
    tempdname:類型為out,與scott.dept.dname的類型一致,為字符型。
    temploc:類型為in out,與scott.dept.loc類型一致,為字符型。
    創建兩個過程內參數。
    loc1:與scott.dept.loc的類型一致,為字符型。
    dname1:與scott.dept.dname的類型一致,為字符型。
    該帶參數的過程的功能是從數據表scott.dept中尋找deptno字段等于tempdeptno調用參數值的dname和loc字段,和其他字符組合,送給兩個出口參數。
    以system用戶名、sysdba身份登錄【sqlplus worksheet】,執行下列pl/sql程序,執行結果如圖9.46所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    create or replace procedure scott.tempprocedure(
        tempdeptno in scott.dept.deptno%type,
        tempdname out scott.dept.dname%type,
        temploc in out scott.dept.loc%type)as
        loc1 scott.dept.loc%type;
        dname1 scott.dept.dname%type;
    begin
        select loc into loc1
        from scott.dept
        where deptno=tempdeptno;
        select dname into dname1
        from scott.dept
        where deptno=tempdeptno;
        temploc:='地址:'||loc1;
        tempdname:='姓名'||dname1;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ createscottprocedure.sql。

    調用參數分割用“,”號。
    3. 使用帶參數的過程
    在主程序中的實際參數和過程中的形式參數的傳遞有很多種辦法,這里推薦讀者采用一一對應的辦法,按對應的位置傳遞參數。要求實際參數和形式參數在數據類型和位置排列上做到完全一致。
    在【sqlplus worksheet】中執行下列pl/sql程序,該程序調用帶參數的過程scott.tempprocedure,實際參數為(10,’’,’’)
    執行結果如圖9.47所示。

    【配套程序位置】:第9章/ executescottprocedure.sql。

    讀者可以嘗試改變參數值,然后測試過程執行結果。



收集最實用的網頁特效代碼!

上一篇:PL/SQL序列

下一篇:PL/SQL流程控制

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石景山区| 鄂尔多斯市| 阿荣旗| 盘山县| 固原市| 龙江县| 巴彦县| 崇明县| 阜平县| 五莲县| 朝阳区| 荆门市| 祥云县| 南郑县| 香港| 集贤县| 阜新| 丰顺县| 清流县| 美姑县| 陵川县| 宽城| 广元市| 吉安市| 塔城市| 东台市| 长泰县| 微山县| 宝兴县| 白银市| 禹城市| 乌兰察布市| 哈尔滨市| 荔浦县| 彭阳县| 全南县| 临高县| 塘沽区| 高碑店市| 吴江市| 松江区|