Oracle中的子程式和包

2021-09-02 10:35:29 字數 1540 閱讀 7243

在oracle中通過使用子程式和包將pl/sql**封裝起來,從而實現模組化,在以後的呼叫中可以多次復用,而不受前台語言的限制,同時通過用子程式和包將pl/sql**封裝起來,有利於提高開發效率和執行效率,但是維護性卻沒有物件導向靈活,如果乙個子程式受到影響,就需要修改該子程式的定義。

在oracle中子程式分為過程和函式,過程適用的場合是處理需要修改資料的業務,如有insert、delete、update、commit、rollback和有異常的地方;而函式適合於處理只是計算,而不必改變資料的場合,它通過返回值返回計算結果,它可以直接用在sql語句和jdbc中。過程的定義方法如下:

create or replace procedure add_emp(

p_ename emp.ename%type,

p_sal emp.sal%type,

p_hiredate varchar2, --不能寫長度

p_empno out emp.empno%type)as

begin

insert into emp(empno,ename,sal,hiredate)

values(seq1.nextval,p_ename,p_sal,to_date(p_hiredate,'yyyy-mm-dd'))

returning empno into p_empno;

commit;

end;

而呼叫方式與使用jdbc基本相同,不同點就是

string sql = "";

callablestatement call =conn.preparecall(sql);

方式呼叫函式。

函式建立方式:

create or replace function add_sal(

p_sal1 number,

p_sal2 number)

return number

asv_sal emp.sal%type;

begin

v_sal:=p_sal1+p_sal2;

return v_sal;

end;

在oracle中包適用於當過程和函式需要分類管理時使用,不同的包相當於不同的容器,先定義包規範,然後再包中實現包規範,包的定義方法如下:

--定義包規範

create or replace package mybao

isprocedure hello(v1 varchar2);

function double_num(v1 number)returnnumber;

end;

--然後在包體中實現

create or replace package body mybao

isprocedure hello(v1 varchar2)

asbegin

dbms_output.put_line('hello');

end;

function double_num(v1 number)returnnumber

asbegin

returnv1*2;

end;

end;

Oracle中子程式和程式包中的函式

oracle中的函式 oracle中的函式是子程式和程式包中的一部分,函式與過程相似,是資料庫中儲存的已命名pl sql程式塊。函式的主要特徵是它必須返回乙個值。建立函式時通過return子句指定函式返回值資料型別。在函式的任何地方,都可以通過 return 表示式 語句從函式返回,這裡的 表示式 ...

ORACLE建立和使用子程式和包

匿名plsql程式 1.用文字編輯器書寫 在sql plus中執行。2.可以儲存在檔案系統中。3.不能被其他程式呼叫,也不能被其他使用者執行。4.不能接受引數,也不能傳遞引數。命名pl sql程式 儲存 1.以編譯物件的方式儲存在資料庫中。2.以庫檔案的方式儲存在檔案系統中。能被其它程式呼叫。能被其...

子程式和程式包

子程式是已命名的pl sql塊,它們儲存在資料庫中,可以為它們指定引數,可以從任何資料庫客戶端和應用程式中呼叫它們。子程式的優點如下 模組化 通過子程式,可以將程式分解為可管理的,明確的邏輯模組。可重用性 子程式在建立並執行後,就可以在任意數目的應用程式中使用。可維護性 子程式可以簡化維護操作,因為...