资源描述:
《oracle 的过程,函数,包等创建》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ORACLE的过程,函数,包等创建的過程和函數都以編譯後的形式存放在數據庫中,函數可以沒有參數也可以有多個參數並有一個返回值。過程有零個或多個參數,沒有返回值。函數和過程都可以通過參數列表接收或返回零個或多個值,函數和過程的主要區別不在於返回值,而在於他們的調用方式。過程是作為一個獨立執行語句調用的: pay_involume(invoice_nbr,30,due_date); 函數以合法的運算式的方式調用: order_volumn:=open_orders(SYSDATE,30); 創建過程的語法如下:
2、 CREATE[ORREPLACE]PROCEDURE[schema.]procedure_name [parameter_lister] {AS
3、IS} declaration_section BEGIN executable_section [EXCEPTION exception_section] END[procedure_name] 每個參數的語法如下: paramter_namemodedatatype[(:=
4、DEFAULT)value] mode有三種形式:IN、OUT、INOUT。
5、 IN表示在調用過程的時候,實際參數的取值被傳遞給該過程,形式參數被認為是只讀的,當過程結束時,控制會返回控制環境,實際參數的值不會改變。 OUT在調用過程時實際參數的取值都將被忽略,在過程內部形式參數只能是被賦值,而不能從中讀取數據,在過程結束後形式參數的內容將被賦予實際參數。 INOUT這種模式是IN和OUT的組合;在過程內部實際參數的值會傳遞給形式參數,形勢參數的值可讀也可寫,過程結束後,形勢參數的值將賦予實際參數。 創建函數的語法和過程的語法基本相同,唯一的區別在於函數有RETUREN子句 CRE
6、ATE[ORREPLACE]FINCTION[schema.]function_name [parameter_list] RETURNreturning_datatype {AS
7、IS} declaration_section BEGIN executable_section [EXCEPTION] exception_section END[procedure_name] 在執行部分函數必須有喲個或多個return語句。 在創建函數中可以調用單行函數和組函數,例如: CREATEORREPLAC
8、EFUNCTIONmy_sin(DegreesInINNUMBER) RETURNNUMBER IS piNUMBER=ACOS(-1); RadiansPerDegreeNUMBER; BEGIN RadiansPerDegree=pi/180; RETURN(SIN(DegreesIn*RadiansPerDegree)); END 包 包是一種將過程、函數和數據結構捆綁在一起的容器;包由兩個部分組成:外部可視包規範,包括函數頭,過程頭,和外部可視數據結構;另一部分是包主體(packagebody),包
9、主體包含了所有被捆綁的過程和函數的聲明、執行、異常處理部分。 打包的PL/SQL程式和沒有打包的有很大的差異,包數據在用戶的整個會話期間都一直存在,當用戶獲得包的執行授權時,就等於獲得包規範中的所有程式和數據結構的許可權。但不能只對包中的某一個函數或過程進行授權。包可以重載過程和函數,在包內可以用同一個名字聲明多個程式,在運行時根據參數的數目和數據類型調用正確的程式。 創建包必須首先創建包規範,創建包規範的語法如下: CREATE[ORREPLACE]PACKAGEpackage_name {AS
10、IS} pub
11、lic_variable_declarations
12、 public_type_declarations
13、 public_exception_declarations
14、 public_cursor_declarations
15、 function_declarations
16、 procedure_specifications END[package_name] 創建包主體使用CREATEPACKAGEBODY語句: CREATE[ORREPLACE]PACKAGEBODYpackage_name {AS
17、IS} p
18、rivate_variable_declarations
19、 private_type_declarations
20、 private_exception_declarations
21、 private_cursor_dec