預存程序和儲存函數指儲存在資料庫中供所有使用者程式調用的子程式叫預存程序、儲存函數。建立預存程序:用CREATE PROCEDURE命令建立預存程序和儲存函數。文法:create [or replace] PROCEDURE 過程名(參數列表) AS PLSQL子程式體;註:預存程序一般用於高度安全的系統中例一:為所有員工漲10%的工資建立預存程序create or replace procedure updateSalas--plsql程式塊--預存程序不能有declarecreate or replace procedure updateSalascursor c1 is select sal,empno from emp;emp_sal emp.sal%type;emp_no emp.empno%type;beginopen c1;loop fetch c1 into emp_sal,emp_no; exit when c1%notfound; update emp set sal=emp_sal*1.1 where empno=emp_no; end loop; close c1; end;調用預存程序方式一:SQL> begin 2 updateSal; 3 end; 4 /方式二:SQL> exec updateSal;調用完成後手工提交一下【Commit語句:結束當前事務, 使當前事務所執行的全部修改永久化。】儲存函數函數(Function)為一命名的儲存程式,可帶參數,並返回一計算值。函數和過程的結構類似,但必須有一個RETURN子句,用於返回函數值。函數說明要指定函數名、結果值的類型,以及參數類型等。建立儲存函數的文法:CREATE [OR REPLACE] FUNCTION 函數名(參數列表) RETURN 函數實值型別ASPLSQL子程式體;例二:擷取指定員工的年度營收create or replace function sumSal(emp_no number)--function(參數的值 必須有類型)--傳回值類型return number--必須有傳回值as--聲明變數emp_sal emp.sal%type;emp_comm emp.comm%type;total emp.sal%type;begin select sal,comm into emp_sal,emp_comm from emp where empno=emp_no; total:=emp_sal*12+nvl(emp_comm,0); return total;--必須返回 傳回值類型一定相同end;調用方法方法一:SQL> begin 2 dbms_output.put_line(sumSal(7369)); 3 end; 4 /方法二:declarev_sal number;beginv_sal:=sumSal(7369);dbms_output.put_line(v_sal);end;結果12777.6