首先明確PL/SQL主要做用做用: sql
SQL語言適合管理關係型數據庫可是它沒法知足更復雜的數據處理,因此產生PLSQL。PLSQL用戶建立存儲過程、函數、觸發器、包及用戶自定義的函數。數據庫
特色:編程
PLSQL具備高級語言所擁有的編程結構,使用PLSQL能夠極大的提升數據庫編程的靈活性,PLSQL不是獨立存在的,他是Oracle服務器的一部分,能夠再客戶端和服務器端運行。服務器
PLSQL的應用環境:客戶端和服務器端函數
PLSQL基本結構:spa
塊頭區blog
ISio
聲明區ast
Beginfunction
執行區
Exception
異常區
塊頭區:塊頭區包含程序單元名字和參數,其中程序單元名字能夠是函數(function),存儲過程(procedure),包(package-package body),參數具備必定的數據類型,該參數分爲三類:in(輸入) out(輸出) inout(雙向的)
相對於函數必須有返回值
Create or replace function function_name(f float)
Return float
存儲過程是沒有返回值
Create or replcae procedure procedure_name (name in varchar2)
聲明區:
Plsql用到的一些變量等都在聲明區進行聲明,變量的數據類型能夠是任意的Oracle數據類型,還能夠進行constraint約束,好比非空等 not null
例子:
Var varchar2(10);
Var varchar2(10) not null;
Var varchar2(10) := ‘hello’;
Var integer default 3.14;
執行區:
用於完成該程序單元的功能邏輯Begin end做爲起始標識能夠包含null 可是不能爲空
異常區:拋出異常
Exception
when exception_name1 then
error1;
when others then
error2;
總體實例:
Declare
var_first varchar2(10);--變量聲明
var_last varchar2(10);
BEGIN
select first_name,last_name
into var_first,var_last from emp;
dbms_output.put_line(‘first_name’||var_first);
dbms_output.put_line(‘last_name’||var_last);--dbms_output.put_line返回信息
EXCEPTION --異常區
WHEN no_data_found THEN
dbms_output.put_line('no data found');
END;