Oracle PL SQL 學習筆記(四)

2021-06-01 02:28:24 字數 3249 閱讀 3249

3.2定義並使用變數

pl/sql資料型別:標量(scalar)型別、復合(composite)型別、參照(reference)型別和lob(larger object)型別。

3.2.1標量變數

1.常用標量型別

(1)varchar2(n)      定義可變長度的字串,長度<=4000位元組

(2)char(n)                定義固定長度的字串,預設1,長度<=2000位元組

(3)number(p,s)     定義固定長度的整數和浮點數,p表示精度,用於指定數字的總位數;s表示標度,用於指定小數點後的數字位數。

(4)date                      定義日期和時間資料,固定長度(7位元組)

(5)timestamp         (oracle9i)                   新增資料型別。同date,同時顯示時間和上下午標記

(6)long和long raw            long資料型別用於定義變長字串,型別varchar2資料型別,

long  raw 資料型別用於定義變長的二進位制資料,長度(32760)

(7)boolean              定義布林變數,其值為true、false或null。表列不能採用該型別

(8)binary_integer        定義整數,表列不能採用該型別(pl/sql型別)

(9)binary_flloat           單精度浮點數

binary_double                  雙精度浮點數

2.定義標量型別

(1)語法:

identifier [constant]     datatype  [not null] [:= | default expr]

identifier:指定變數或常量的名稱                         constant:指定常量

datatype:指定變數或常量的資料型別               :=            為變數和常量指定初始值

default:為變數和常量指定初始值

expr:     指定初始值的pl/sql表示式,可以是文字值、其他變數、函式等。

(2)示例:

v_ename                    varchar2(10);

v_sal                            number(6,2);

v_balance                  binary_float;        ---oracle 10g新資料型別

c_tax_rate                 constant number(3,2) :=5.5

v_hiredate                 date;

v_valid                        boolean                   not null  default  false

(3)使用%type屬性

使用%type屬性定義變數,會按照資料庫列或其他變數來確定新變數的型別和長度。

v_ename  emp.ename%type;

3.2.2復合變數

指用於存放多個值的變數。

(1)     pl/sql記錄

pl/sql記錄類似高階語言中的結構。每個pl/sql記錄一般包含對個成員。使用時,需要在定義部分定義記錄型別和記錄變數。引用記錄成員時,必須加記錄變數作為字首。

delecare

type  emp_record_type  is  record(

name  emp.ename%type,

salary  emp.sal%type);

emp_recore  emp_record_type;

begin

select  ename,sal  into  emp_record

from  emp  where  empno=7788;

dbms_output.put_line(『雇員名:』|| emp_record.name);   

end;

emp_record_type是pl/sql記錄型別,該記錄型別包含了2個成員(name,salary); emp_record是記錄變數;emp_record.name表示引用記錄變數emp_record的成員name

(2)     pl/sql表

類似於高階語言中的陣列。區別:高階語言陣列的下標不能為負,pl/sql可以;高階語言資料的元素個數有限制,pl/sql沒有。使用pl/sql表事,必須首先在定義部分pl/sql表型別和pl/sql表變數,然後在執行部分中引用pl/sql表變數。

delecare

type  emp_record_type  is  table  of  emp.ename%type

index  by  binary_integer;        

begin

select  ename  into  emp_table(-1) 

from  emp  where  empno=7788;

dbms_output.put_line(『雇員名:』|| emp_table(-1));   

end;

emp_record_type為pl/sql表型別;emp.ename%type指定了pl/sql表元素的資料型別和長度;ename_table為pl/sql表變數,ename_table(-1)表示下標為-1的元素。

(3)     巢狀表      類似於高階語言中的陣列

(4)     varray     varray(變長陣列)類似於巢狀表

3.2.3參照變數

指用於存放數值指標的變數

1.       ref  cursor

2.       ref  obj_type

3..2.4 lob變數

lob變數指用於儲存大批量資料的變數。oracle將lob分為兩種:內部lob和外部lob.內部lob包括clob,blob和nclob三種型別,它們是資料被儲存在資料庫中,並且支援是事務提交。外部lob只有bfile一種型別,該型別的資料被儲存在os檔案中,並且不支援事務操作。其中,clob/nclob用於儲存大批量字元資料,blob用於儲存大批量二進位制資料。而bfile則儲存指向os檔案的指標。

醫藥配方需要大量中文說明,可以將其對應的資料庫定義為clob型別;

**對應於圖形/影象(二進位制資料),可以將其對應的資料庫定義為blob型別;

通過資料庫訪問os電影檔案,可以在資料庫中定義bfile型別的資料庫列。

Oracle PL SQL學習筆記

游標分類 游標概念 與游標相關的語法型別 建立游標 如同宣告任何其他變數一樣 cursor cursor name is sql statement 開啟與關閉游標 開啟游標 open cursor arg arg 關閉游標 close cursor 取資料 fetch cursor into va...

Oracle PL SQL 學習筆記

一 pl sql 塊 塊定義語法 declare 定義部分 定義常量 變數 複雜資料型別 游標 begin 執行部分 pl sql語句和sql語句 exception 異常處理部分 處理執行錯誤 end 注 pl sql中結束輸入使用 字元 dbms output.put line 輸出的字串內容 ...

Oracle PL SQL 學習筆記(二)

二 pl sql 開發工具 2.1sql plus 1.在命令列執行sql plus 語法 sqlplus username password server 其中,username使用者名稱,password密碼,server指定主機字串。當連線到本地資料庫時,不需要提供網路服務名。d sqlplu...