包:java
包是PLSQL中多個單元的邏輯組合,他將過程組合在一個包內容,以供用戶調用,使用後,不須要程序員頻繁的修改程序,能夠保持程序的邏輯完整性,對包中的過程從新定義或者編譯,以便修改部分功能,從而更好的實現業務功能。程序員
好處:編程
在程序設計時,程序員能夠經過完成某種業務邏輯的包來簡化編程。安全
包被加載到SGA,便不須要從新加載,減小調用的加載時間。函數
包能夠增長安全性,經過建立私有過程或者函數來實現業務邏輯和數據隱藏。spa
包的建立:設計
PACKAGE package_name對象
ISelement
[變量或者類型說明]io
[遊標聲明]
[主體對象聲明(如函數過程等)]
END packeage_name
PACKAGE BODY package_name
IS
[變量或者遊標聲明]
[遊標相關select語句聲明]
[主體對象body聲明]
BEGIN
可執行代碼
EXCEPTION
[異常處理]
END package_name
調用方式
① PACKAGE_NAME.element_name (包外)
② 直接調用 (包內)
若是有同名過程須要不一樣的參數加以區分。同java等語言相同,函數重載*
包的私有過程和函數 (按私有變量理解)
在包的聲明中沒有定義在包體中建立的函數或者過程時,要外部調用包體中的函數或者過程會報錯,此時包體中的函數和過程稱爲私有的,只能在包體內部調用
當在包聲明中定義函數或者過程,可是未在包體中定義函數或者過程則會報錯。
實現了信息安全和豐富了包的業務邏輯,實現信息隱藏
過程:
CREATE OR REPLACE PRODUCE PRODUCE_NAME
IS
聲明區
BEGIN
執行區
EXCEPTION
異常處理區
END;
過程當中的IN 和 OUT
In是輸入參數,out是輸出參數
函數:
CREATE OR REPLACE FUNCTION function_name (f float)
RETURN float
IS
BEGIN
return f*f
END function_name;
函數定義,函數名,參數(in out)也能夠沒有參數,可是函數必需要有返回值,須要在函數定義中明確指定返回的數據類型。