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