1. 程式人生 > >匿名塊、變數和簡單的資料型別

匿名塊、變數和簡單的資料型別

1.匿名塊的編寫

塊的結構和變數的宣告

declare

變數宣告部分;

begin

邏輯處理執行部分;

end;

/

便於維護(模組化的SQL)

提高資料庫的安全性(把SQL原子操作封裝起來了,更安全)

提高效能(第一次建立物件的時候,資料庫儲存的是編譯好的二進位制,重複執行不會再進行編譯)

簡化使用(重複呼叫)

2.簡寫一個最簡單的匿名塊

(如果塊中不需要使用變數,可以省略變數宣告部分)

如果想看到PL/SQL在SQLPLUS環境中的輸出部分

需要設定serveroutput為on,預設是off,即不輸出PL/SQL的輸出結果

set serveroutput on

begin

dbms_output.put_line('--------------------------------------');

dbms_output.put_line('               hello world');

dbms_output.put_line('--------------------------------------');

end;

/

3.變數

變數就是資料的容器,儲存資料用的

變數一定要有資料型別

資料型別分為簡單資料型別和複雜資料型別

%type就是宣告一個變數和另外一個變數資料型別相同

或與某表中的某列資料型別相同

declare

v1 number;                             --顯式宣告簡單的資料型別

v2 v1%type;                            --不必知道V1是啥資料型別,通過%type就可以使V2與V1資料型別一致

v3 emp.empno%type;          --V3的資料型別與EMP表中EMPNO欄位的資料型別一致

begin

v1:=100;

v2:=200;

v3:=300;

dbms_output.put_line(v1||' '||v2||' '||v3);

end;

/

PLSQL程式碼中的註釋

--行級註釋

/* ..... */多行註釋

變數的作用範圍

外部模組變數可以傳到內部塊使用

內部塊的變數不會影響到外部塊

4.取表中的資料對變數進行賦值

使用select... into 變數來實現通過表中的資料對變更的賦值

declare

v1 emp.empno%type;

v2 emp.ename%type;

v3 emp.sal%type;

begin

select empno,ename,sal into v1,v2,v3 from emp where empno=7900;

dbms_output.put_line(v1||' '||v2||' '||v3);

end;

/

四種隱式遊標與DML有關,廣泛應用於IF-ELSE以及迴圈判斷條件中

sql%rowcount     number型別

sql%found            boolean型別

sql%notfound      boolean型別

sql%isopen           boolean型別

declare

v1 emp.deptno%type :=20;

v2 number;

begin

delete emp where deptno=v1;

v2 := sql%rowcount;

dbms_output.put_line(v2);

rollback;

end;

/