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

PL/SQL基本語法要素(組圖)

2013-11-13 15:59:34  來源: Oracle 

  常量
  
   定義常量的語法格式
  
  常量名 constant 類型標識符 [not null]:=值;
  
  常量包括後面的變量名都必須以字母開頭不能有空格不能超過個字符長度同時不能和保留字同名常(變)量名稱不區分大小寫在字母後面可以帶數字或特殊字符括號內的not null為可選參數若選用表明該常(變)量不能為空值
  
   實例
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為pi的數字型常量長度為
  
  執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  declare
  pi constant number():=;
  begin
  commit;
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\constantdefinesql
  
 

  基本數據類型變量
  
   基本數據類型
  
  PL/SQL中常用的基本數據類型如表所示
  
  表 常見的數據基本類型
  
  類型標識符 說明
  
  Number 數字型
  Int 整數型
  Pls_integer 整數型產生溢出時出現錯誤
  Binary_integer 整數型表示帶符號的整數
  Char 定長字符型最大個字符
  Varchar 變長字符型最大個字符
  Long 變長字符型最長GB
  Date 日期型
  Boolean 布爾型(TRUEFALSENULL三者取一)
  
  在PL/SQL中使用的數據類型和Oracle數據庫中使用的數據類型有的含義是完全一致的有的是有不同的含義的
  
   基本數據類型變量的定義方法
  
  變量名 類型標識符 [not null]:=值;
  
   實例
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為age的數字型變量長度為初始值為執行結果如圖所示
  
 

  ―――――――――――――――――――――――――――――――――――――
  declare
  age number():=;
  begin
  commit;
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\basicdatatypedefinesql
  
  復合數據類型變量
  
  下面介紹常見的幾種復合數據類型變量的定義
  
   使用%type定義變量
  
  為了讓PL/SQL中變量的類型和數據表中的字段的數據類型一致Oracle i提供了%type定義方法這樣當數據表的字段類型修改後PL/SQL程序中相應變量的類型也自動修改
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為mydate的變量其類型和tempusertesttable數據表中的currentdate字段類型是一致的
  
  執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  Declare
  mydate tempusertesttablecurrentdate%type;
  begin
  commit;
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\typedefinesql
  
 

   定義記錄類型變量
  
  很多結構化程序設計語言都提供了記錄類型的數據類型在PL/SQL中也支持將多個基本數據類型捆綁在一起的記錄數據類型
  
  下面的程序代碼定義了名為myrecord的記錄類型該記錄類型由整數型的myrecordnumber和日期型的mycurrentdate基本類型變量組成srecord是該類型的變量引用記錄型變量的方法是記錄變量名基本類型變量名
  
  程序的執行部分從tempusertesttable數據表中提取recordnumber字段為的記錄的內容存放在srecord復合變量裡然後輸出srecordmycurrentdate的值實際上就是數據表中相應記錄的currentdate的值
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  set serveroutput on
  declare
  type myrecord is record(
  myrecordnumber int
  mycurrentdate date);
  srecord myrecord;
  begin
  select * into srecord from tempusertesttable where recordnumber=;
  dbms_outputput_line(srecordmycurrentdate);
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ recordtypedefinesql
  
  在PL/SQL程序中select語句總是和into配合使用into子句後面就是要被賦值的變量
  
 

   使用%rowtype定義變量
  
  使用%type可以使變量獲得字段的數據類型使用%rowtype可以使變量獲得整個記錄的數據類型比較兩者定義的不同變量名 數據表列名%type變量名 數據表%rowtype
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為mytable的復合類型變量與testtable數據表結構相同執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  Declare
  mytable testtable%rowtype;
  begin
  select * into mytable
  from tempusertesttable
  where recordnumber=;
  dbms_outputput_line(mytablecurrentdate);
  end;
  ―――――――――――――――――――――――――――――――――――――
  
 

  【配套程序位置】章\ rowtypedefinesql
  
   定義一維表類型變量
  
  表類型變量和數據表是有區別的定義表類型變量的語法如下
  ―――――――――――――――――――――――――――――――――――――
  type 表類型 is table of 類型 index by binary_integer;
  
  表變量名 表類型;
  ―――――――――――――――――――――――――――――――――――――
  類型可以是前面的類型定義index by binary_integer子句代表以符號整數為索引這樣訪問表類型變量中的數據方法就是表變量名(索引符號整數)
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為tabletype和tabletype的兩個一維表類型相當於一維數組table和table分別是兩種表類型變量
  
  執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  Declare
  type tabletype is table of varchar() index by binary_integer;
  type tabletype is table of tempusertesttablerecordnumber%type index by binary_integer;
  table tabletype;
  table tabletype;
  begin
  table():=大學;
  table():=大專;
  table():=;
  table():=;
  dbms_outputput_line(table()||table());
  dbms_outputput_line(table()||table());
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ tabletypedefinesql
  
 

  ||是連接字符串的運算符
  
   定義多維表類型變量
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為tabletype的多維表類型相當於多維數組table是多維表類型變量將數據表tempusertesttable中recordnumber為的記錄提取出來存放在table中並顯示執行結果如圖所示
  ―――――――――――――――――――――――――――――――――――――
  Declare
  type tabletype is table of testtable%rowtype index by binary_integer;
  table tabletype;
  begin
  select * into table()
  from tempusertesttable
  where recordnumber=;
  dbms_outputput_line(table()recordnumber||table()currentdate);
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】章\ tabletypedefinesql
  
 

  在定義好的表類型變量裡可以使用countdeletefirstlastnextexists和prior等屬性進行操作使用方法為表變量名屬性返回的是數字
  
  在【SQLPlus Worksheet】中執行下列PL/SQL程序該程序定義了名為tabletype的一維表類型table是一維表類型變量變量中插入個數據綜合使用了表變量屬性
  
  執
From:http://tw.wingwit.com/Article/program/Oracle/201311/17639.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.