PL/SQL程序結構學習 ------from-//ddvip.com

           

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

          PL/SQL實例分析

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

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

              (5)讀者也可以在【SQLPlus Worksheet】中直接執行如下SQL代碼完成上述操作。
              ―――――――――――――――――――――――――――――――――――――
              CREATE TABLE "TEMPUSER"."TESTTABLE" ("RECORDNUMBER" NUMBER(4) NOT
                  NULL, "CURRENTDATE" DATE NOT NULL)
                  TABLESPACE "USERS"
              ―――――――――――――――――――――――――――――――――――――
              【配套程序位置】:第9章\createtesttable.sql。
              (6)以tempuser用戶身份登錄【SQLPlus Worksheet】,執行下列SQL代碼完成向數據表tempuser.testable中輸入100個記錄的功能。執行結果如圖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('成功錄入數據!');
              commit;
              end;
              ―――――――――――――――――――――――――――――――――――――
              【配套程序位置】:第9章\inserttesttable.sql。

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

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

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

               表中的sysdate為系統時間函數;dbms_output為系統默認的程序包,put_line為包中定義的方法,功能是輸出信息;在Oracle 中,所有對數據庫數據的更改并沒有直接操作數據庫,而是放在叫工作區的內存里,只有在commit語句執行后,才發生永久更改。

          PL/SQL程序結構

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

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

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


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


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          本期話題
          能源行業資產管理咨詢
          資產管理信息化方案提供
          資產管理相關行業培訓
          大型企業軟件體系架構整合
          資產管理信息系統實施
          信息集成
          信息孤島

          常用鏈接

          留言簿(6)

          隨筆檔案(45)

          文章檔案(7)

          新聞檔案(1)

          相冊

          wallgate management consulting

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 公主岭市| 泽普县| 衢州市| 泰顺县| 孙吴县| 新巴尔虎左旗| 修文县| 女性| 乌什县| 高阳县| 磐石市| 霍山县| 黑河市| 敦化市| 文登市| 吉水县| 大田县| 镶黄旗| 肥西县| 东乌珠穆沁旗| 临邑县| 襄汾县| 噶尔县| 霞浦县| 鲜城| 凤台县| 南郑县| 砀山县| 彰化市| 桂阳县| 根河市| 宾川县| 花莲市| 巩义市| 遵义县| 蓬溪县| 米林县| 余庆县| 威信县| 蓝田县| 龙门县|