PLSQL編程基礎

 

數據類型:sql

 Charvarchar2數據類型:數據庫

 相同點:都是做爲字符類型數組

 不一樣點:char是定長的varchar2是變長的函數

     Char 最大爲2000字節 varchar232767spa

注意: 若是定義char類型爲char(10),可是隻傳入了7位數據,剩下的則會用空格補全。對象

 *若是出現直等狀況,可能形成數據關聯失敗的狀況。建議使用varhcar2定義字符類型。事務

 

NUMBER類型:rem

 Number(5,2) 表示共5位長,小數點前3位小數點後2文檔

 Number(4,-3)表示共4位長,-3 表示從後往前截取,判斷千分位是否進位,如:5680 number(4,-3) 結果爲6000字符串

 

LONGLONG RAW

 LONG用於存儲變長的字符串,最大長度爲2GB ,因爲容量上的優點多用來存儲文本,字符數組以及各類文檔,可使用DML語句操做LONG列進行增刪改查等。可是不能再表達式,函數以及wheregroup by 等特定語句中引用LONG類型的數據。

LONG RAW 用於存儲原始的二進制變量數據,最大值爲2GB,這樣的數據須要Oracle的包來讀取並轉化爲二進制數據,而後存儲,並使用相反的方法來讀取,不能使用DML語句來直接查詢或者進行其餘操做。

 

BOOLEAN類型:

Boolean用於存儲true false null

 True表示真值 false 表示價值 null 表示未知,而且sql沒有數據類型與boolean對應

 可是Boolean的值能夠經過if或者case 語句完成轉化

CREATE OR REPLACE PROCEDURE boolean_type (b BOOLEAN)

IS 

BEGIN

  CASE

    WHEN b IS NULL THEN

      dbms_output.put_line('is null');

    WHEN b THEN

      dbms_output.put_line('is true');

    WHEN NOT b THEN

      dbms_output.put_line('is flase');

END;

 

PLS_INTEGER數據類型:

PLS_INTEGER類型和BINARY_INTEGE是相同的,給類型是帶符號的整數數據類型,有效範圍(-2147483648~2147483648),相比於NUMBER數據類型PLS_INTEGER直接使用硬件存儲和計算。可是使用PLS_INTEGER存在溢出問題解決辦法可使用INTEGER

SIMPLE_INTEGERPLS_INTEGER的子類型,具備非空約束的優點,若是指定了NULL值,則系統會報錯,若是對整數數據類型須要非空約束,建議使用SIMPLE_INTEGER減小判斷,而且SIMPLE_INTEGER定義時必須賦初始值,由於非空。

 

 

DATETIMESTAMP

日期類型,timestampdate類型更加準確些。

DECLARE

date_type DATE;

timestamp_type TIMESTAMP;

BEGIN

  SELECT SYSDATE INTO date_type FROM dual;

  dbms_output.put_line('DATE類型--'||date_type);

  SELECT SYSDATE INTO timestamp_type FROM dual;

  dbms_output.put_line('TIMESTAMP類型--'||timestamp_type);

END;

結果:

DATE類型--22-1月 -17

TIMESTAMP類型--22-1月 -17 02.12.04.000000 下午

 

ARCHORED類型:

Archored類型基於底層的數據庫對象,定義以後會隨着底層數據庫的數據類型改變而改變,用戶沒必要修改程序就能夠適應底層數據類型的改變。

語法格式:變量名  對象類型屬性%TYPE;

如:var_name變量名  emp(對象名).name(屬性名)%TYPE;

 

自定義數據類型:

 自定義數據類型分爲無約束和有約束。

無約束: subtype 子類型名稱 is 基類型  

無約束自定義子類型與基類型有相同的取值範圍,實際上至關於基類型的別名

 subtype  mynumber is number;

 var1 mynumber(3,2);

有約束的:

 在無約束相同的語法中可使用精度,範圍,或者約束來定義用戶子類型

:subtype mynumber is number(3,2)

  若是使用此類型定義4000.22 則報錯!

 

PLSQL保留字:

  DECLAREBEGINENDEXCEPTION

 

變量:

聲明的變量能夠賦初始值,指定非空約束,也可使用默認值,或者定義爲常量,常量不會再變化而且在聲明時賦值。pai constant number := 3.14

變量的有效範圍,內部局部,和全局

如:DECLARE

vars VARCHAR2(10) := 'var_out';

BEGIN

 DECLARE

   vars VARCHAR2(10) := 'var_in';

   BEGIN 

     dbms_output.put_line('in:='||vars);

   END;

 dbms_output.put_line('out:='||vars);

END;

結果:

in:=var_in  out:=var_out

變量還可使用select first_name_type into first_name from emp

 

序列號:

Oracle使用序列生成器自動生成用戶能夠再事務中使用的惟一序列號,該序列號是一個整數類型,主要用於在多用戶下產生惟一的數字序列,可是不會形成額外的磁盤I/O或者事務鎖。理解爲數據庫的一個對象,該對象產生惟一序列,可以避免多用戶相互等待而形成的事務串執行,序列號的使用提升了系統的事務處理能力,減小了多用戶並行操做的等待時間。

建立一個序列:

Create sequence sequence_name start with 100 increment by 1;

建立一個序列sequence_name 100開始每次自增1

當每次調用序列號的nextval 序列號都增長1

 

事務:

Commit  rollback  savepoint

Commit提交

Rollback回滾

Savepoint 保存點

commit事務提交永久存儲,rollback 未提交回滾到原始

Savepoint 斷點

例:

事務1

  Savepoint1

事務2

  Savepoint2

事務3

  Savepoint3

 

Rollback savepoint1

End;  執行結束,結果是回到savepoint1的事務結果。

相關文章
相關標籤/搜索