PL/SQL編程

來源:互聯網
上載者:User

資料類型:

數字類型:
Number用來表示可變長的數值列,文法為Number(p, s),p是指所有有效數位位元,s是指小數點以後的位元;p和s的取值分別是p=1 to 38,s=-84 to 127;
有效數位:從左邊第一個不為0的數算起,小數點和負號不計入有效位元。

p>0,對s分3種情況:
1. s>0
精確到小數點右邊s位,並四捨五入。然後檢驗有效數位是否<=p;如果s>p,小數點右邊至少有s-p個0填充。
2. s<0
精確到小數點左邊s位,並四捨五入。然後檢驗有效數位是否<=p+|s|
3.s是0或者未指定,四捨五入到最近整數。
注意:當p小於s時候,表示數字是絕對值小於1的數字,且從小數點右邊開始的前s-p 位必須是0,保留s位小數。

比如
Value             Datatype     Stored Value
123.2564       NUMBER    123.2564
1234.9876     NUMBER(6)    1235
1234.9876     NUMBER(6,2)    1234.99
12345.12345 NUMBER(6,2)    Error
12345.345     NUMBER(5,-2)    12300
1234567        NUMBER(5,-2)    1234600
12345678      NUMBER(5,-2)    Error
12345.58      NUMBER(*, 1)    12345.6
0.1               NUMBER(4,5)    Error
0.01234567   NUMBER(4,5)    0.01235
0.09999        NUMBER(4,5)    0.09999
0.099996      NUMBER(4,5)    <>  

用法如下:
create table t_n(id number(5,2));
insert into t_n values(123.455);
insert into t_n values(1.234);
insert into t_n values(.001);
select * from t_n 結果為:

ID
123.46
1.23
0.00

Number類型儲存實數,PLS_Integer和BINARY_Integer只能儲存整數。

字元類型:

Char表示定長的字串,文法Char(L),L是可選的。如果沒有指定L值,預設為1;最大長度為32767。

VarChar2用來儲存可變的字串,文法VarChar2(L),L是必須的。最大長度為32767。

布爾類型:

Boolean類型的合法賦值為True、False和Null。

類型轉換:

To_Char:可以將Number和Date類型轉換為Varchar2類型;

To_Date:將Char類型轉換Date類型;

To_Number:將Char類型轉換Number類型;

變數和常量:

變數名稱:1.必須以字母開頭;2.其後可以跟一個或多個字母、數字(0~9)、特殊字元$、#或_ ;

              3.變數長度不超過30個字元;4.變數名中不能有空格。

1.變數的聲明:

DECLARE
v_StudentName VARCHAR2(20),
v_CurrentDate DATE;
v_NumberCredits NUMBER(3);

2.自訂的資料類型:

DECLARE
TYPE t_StudentRecord IS RECORD (FirstName Varchar2(10),LastName Varchar2(10),

CurrentCredits NUMBER(3));
v_Student  t_StudentRecord;

3.變數屬性:

下面介紹常見的幾種複合資料型別變數的定義。
    (1)使用%type定義變數
    為了讓PL/SQL中變數的類型和資料表中的欄位的資料類型一致,Oracle 9i提供了%type定義方法。這樣當資料表的欄位類型修改後,PL/SQL程式中相應變數的類型也自動修改。如下:
declare
   mytable emp.empno%type;
begin
   select a.empno into mytable
   from emp a
   where a.ename='SCOTT';
   dbms_output.put_line(mytable);
end;   

   (2)使用%rowtype定義變數
    使用%type可以使變數獲得欄位的資料類型,使用%rowtype可以使變數獲得整個記錄的資料類型。

    比較兩者定義的不同:變數名 資料表.列名%type,變數名 資料表%rowtype。
declare
   mytable emp%rowtype;
begin
   select * into mytable
   from emp a
   where a.ename='SCOTT';
   dbms_output.put_line(mytable.empno||' '||mytable.job);
end; 

流程式控制制:

 

 待續。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.