匿名塊、變數和簡單的資料型別
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;
/