熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

PL/SQL程序結構(組圖)

2013-11-13 22:24:11  來源: Oracle 

  什麼是PL/SQL程序
  
  前面第章學習的標准化的SQL語言對數據庫進行各種操作每次只能執行一條語句語句以英文的分號;為結束標識這樣使用起來很不方便同時效率較低這是因為Oracle數據庫系統不像VBVC這樣的程序設計語言它側重於後台數據庫的管理因此提供的編程能力較弱而結構化編程語言對數據庫的支持能力又較弱如果一些稍微復雜點的管理任務都要借助編程語言來實現的話這對管理員來講是很大的負擔
  
  正是在這種需求的驅使下從Oracle 開始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程序完成向該表中自動輸入個記錄要求recordnumber字段從currentdate字段為當前系統時間
  
  ()前面建立的tempuser用戶默認的表空間為USERS因此要想使該用戶能夠使用表空間建立數據方案對象必須首先給其賦予名為RESOURCE的角色
  
  ()以system用戶SYSDBA身份登錄數據庫後在【企業管理器】中按照修改用戶的步驟進行操作直到出現如圖所示的編輯用戶的【角色】選項卡
  
  在【可用】下拉列表框中選擇RESOURCE單擊【箭頭向下】按鈕將其添加到【已授予】列表框中【默認值】單元格被選中單擊確定按鈕
  
 

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

  ()讀者也可以在【SQLPlus Worksheet】中直接執行如下SQL代碼完成上述操作
  ―――――――――――――――――――――――――――――――――――――
  CREATE TABLE TEMPUSERTESTTABLE (RECORDNUMBER NUMBER() NOT
  NULL CURRENTDATE DATE NOT NULL)
  TABLESPACE USERS
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\createtesttablesql
  
  ()以tempuser用戶身份登錄【SQLPlus Worksheet】執行下列SQL代碼完成向數據表tempusertestable中輸入個記錄的功能執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  set serveroutput on
  declare
  maxrecords constant int:=;
  i int :=;
  begin
  for i in maxrecords loop
  insert into tempusertesttable(recordnumbercurrentdate)
  values(isysdate);
  end loop;
  dbms_outputput_line(成功錄入數據!);
  commit;
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\inserttesttablesql
  
 

  ()在【SQLPlus Worksheet】中執行下列語句查詢插入的數據結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  select * from tempusertesttable;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\selecttesttablesql
  
 

  對完成上述數據插入過程的PL/SQL程序的分析如表所示
  
  表 PL/SQL實例代碼分析
  
  程序代碼 說明
  set serveroutput on 允許服務器輸出
  declare 定義部分標識
  maxrecords constant int:=; 定義maxrecords為整型常量
  i int :=; 定義i為整型值變量初值為
  Begin 執行部分標識
  for i in maxrecords loop i從循環到maxrecords
  Insert into tempusertesttable(recordnumbercurrentdate) values (isysdate); 向數據表中插入數據
  end loop; 結束循環
  dbms_outputput_line(成功錄入數據!); 顯示成功錄入數據信息
  commit; 提交結果
  end; 結束執行
  
  表中的sysdate為系統時間函數dbms_output為系統默認的程序包put_line為包中定義的方法功能是輸出信息在Oracle中所有對數據庫數據的更改並沒有直接操作數據庫而是放在叫工作區的內存裡只有在commit語句執行後才發生永久更改
  
  PL/SQL程序結構
  
  結合上述實例進行分析完整的PL/SQL程序結構可以分為個部分
  
   定義部分
  以Declare為標識在該部分中定義程序中要使用的常量變量游標和例外處理名稱PL/SQL程序中使用的所有定義必須在該部分集中定義而在高級語言裡變量可以在程序執行過程中定義
  
   執行部分
  以begin為開始標識以end為結束標識該部分是每個PL/SQL程序所必備的包含了對數據庫的操作語句和各種流程控制語句
  
   異常處理部分
  該部分包含在執行部分裡面以exception為標識對程序執行中產生的異常情況進行處理一個完整的PL/SQL程序的總體結構如圖所示
  
 

  有的程序比較簡單往往省略異常處理部分下面開始介紹PL/SQL的一些基本語法要素
From:http://tw.wingwit.com/Article/program/Oracle/201311/18995.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.