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...