1. 程式人生 > 資料庫 >Oracle:儲存過程 PL/SQL資料型別

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;