Oracle:儲存過程 PL/SQL資料型別
一.標量資料型別
標量資料型別的變數只有一個值,且內部沒有分量。標量資料型別包括數字型,字元型,日期型和布林型。這些型別有的是 Oracle SQL 中有的資料型別,有的是 PL/SQL 自身附加的資料型別。下面我們來詳細介紹一下常用的的標量資料型別:
1、數值型別:主要用來儲存數值型別的資料。常用的有NUMBER、PLS_INTEGER、BINARY_INTEGER和SIMPLE_INTEGER型別。
NUMBER:可以儲存小數和整數型別資料,格式為NUMBER(p,s),其中p表示的是精度(既是位數的長度),s表示的是小數點後的位數。例如:number(3,2)表示的範圍-9.99—9.99。
PLS_INTEGER、BINARY_INTEGER、SIMPLE_INTEGER:主要用來儲存整數型別,它們儲存整數的範圍都是-(2^31)...(2^31-1)。但是BINARY_INTEGER發生記憶體溢位的時候會給它分配一個number型別的資料,而PLS_INTEGER會直接拋異常報錯,SIMPLE_INTEGER是PLS_INTEGER的一個子型別,它不允許存在NULL值資料。
2、字元型別:用來儲存單個字元或字串。主要有的型別有如下型別:
CHAR型別:固定長度的字串,CHAR(n):預設長度是1,當字串長度小於n時,會自動右補空格,所以在取資料的時候要注意補空格。
VARCHAR2型別:該型別儲存可變長度的字串VARCHAR2(n),最大儲存的長度為4000個位元組。當字串長度小於n時,不會補齊空格。
LONG型別:該型別儲存可變長度的字串,不同於VARCAHR2型別,它對於欄位的儲存長度可達2G,但是作為PL/SQL變數,和VARCHAR2一樣,只能儲存最大32767位元組。
3、時間型別:主要和SQL中的時間型別一致,有DATE和TIMESTAMP兩種時間型別。
4、布林型別:PL/SQL程式中的邏輯判斷的值有:TRUE、FALSE、NULL值。
二.引用資料型別
引用資料型別是PL/SQL程式語言特有的資料型別,是用來引用資料庫當中的某一行或者某個欄位作為資料型別的宣告。其中有兩種引用型別:%TYPE和%ROWTYPE
1.%TYPE型別:
引用資料庫中表的某列的型別作為某變數的資料型別,也可以直接引用PL/SQL程式中某個變數作為新變數的資料型別。下面我們通過一個案例做下測試:
declare
ls_stuname stuinfo.stuname%type;
--通過學生姓名欄位宣告ls_stuname
begin
select
t.stuname
into
ls_stuname
from
student.stuinfo t
where
t.stuid =
'SC201801006'
;
dbms_output.put_line(ls_stuname);
exception
when
no_data_found
then
dbms_output.put_line(
'該學生在學生資訊表中找不到'
);
end
;
2.% ROWTYPE 型別:
%ROWTYPE型別是PL/SQL程式引用資料庫表中的一行作為資料型別,即 RECORD 型別(記錄型別)表示一條資料記錄。類似java程式當中的物件的例項。可以使用“.”來訪問記錄中的屬性。下面我們通過例項來做下測試:
declare
ls_stuinfo stuinfo%rowtype;
xsjbxx varchar2(50);
begin
select
t.*
into
ls_stuinfo
from
stuinfo t
where
t.stuid=
'SC201801006'
;
xsjbxx:=
'姓名:'
||ls_stuinfo.stuname ||
' 學號:'
||ls_stuinfo.stuid ||
' 年齡:'
||ls_stuinfo.age;
dbms_output.put_line(xsjbxx);
exception
when
no_data_found
then
dbms_output.put_line(
'該學生在學生資訊表中找不到'
);
end
;