Oracle建立儲存過程 建立函式 建立包

2021-07-03 17:21:52 字數 4201 閱讀 7892



一、oracle建立儲存過程

1、基本語法

create

orreplace

procedureupdate_emp_sal

(name

inout type,

name

inout type, ...

) is

begin

endupdate_emp_sal;

2、寫乙個簡單的例子修改emp表的ename欄位

create

orreplace

procedure

update_emp

(v_empno

varchar2

,v_ename

varchar2

) is

begin

update

empset

ename

=v_ename

where

empno

=v_empno;

endupdate_emp;

呼叫方法如下:

sql>

execupdate_emp(

'7935',

'test');

2、有返回值的儲存過程

就寫乙個簡單的返回empno=7935的sal值

create

orreplace

procedure

emp_out_sal

(v_empno in

varchar2

,v_sal out

number

) is

vsal number(7

,2);begin

select

sal

into

vsal

from

emp

where

empno

=v_empno;

v_sal:=

vsal;

end;

呼叫有返回值的過程

sql>

varvsal

number

sql>

exec

emp_out_sal(

'7935

',:vsal); 或者

sql>

varvsal

number

sql>

call emp_out_sal(

'7935

',:vsal);

執行結果

vsal

---------

700

二、oracle建立函式(function)

1、基本語法規則如下:

create

orreplace

function

(name

intype, name

intype, ...)

return

number

isresult

number

;begin

return

(result);

end;

2、寫乙個簡單的查詢例子查詢出empno=7935的sal值

create

orreplace

function

ret_emp_sal(v_ename

varchar2

)return

number

isv_sal

number(7

,2);begin

select

nvl(sal,0)

into

v_sal

from

emp

where

lower

(ename)

=lower

(v_ename);

return

v_sal;

end;

呼叫此函式:

sql

>

varvsla

number

sql>

call ret_emp_sal

('7935')

into

:vsal;

三、oracle建立包

包用於組合邏輯相關的過程和函式,它由包規範和包體兩個部分組成。包規範用於定義公用的常量、變數、過程和函式,

建立包規範可以使用create package命令,建立包體可以使用create package body

1、建立包規範

create

package emp_pkg is

procedure

emp_update_ename(v_empno

varchar2

,v_ename

varchar2

);function

emp_get_sal(v_empno

varchar2

) return

number

;end

;2、建立包體

create

orreplace

package body emp_pkg

isprocedure

emp_update_ename

(v_empno

varchar2

,v_ename

varchar2)is

vename

varchar2(32

);begin

update

emp

setename

=v_ename

where

empno

=v_empno;

commit

;select

ename

into

vename

from

emp

where

empno

=v_empno;

dbms_output.put_line(

'雇員名稱:'||

vename);

end;

function

emp_get_sal

(v_empno

varchar2

)return

number

isvsal

number(7

,2);begin

select

sal

into

vsal

from

emp

where

empno

=v_empno;

return

vsal;

end;

end;

在此提示,在沒有建立包規範就建立包體,會失敗,要使用包,必須先建立包規範,然後在建立包體

當要呼叫包的過程和函式時,在過程和函式的名稱前加上包名作為字首(包名.子程式名稱),而如果要訪問其他方案的包時需要在包的名稱前加上方案的名稱

(方案名稱.包名.子程式名稱)

例項:

sql

>

varvsla

number

sql>

call emp_pkg.emp_get_sal(

'7935')

into

:vsal;

method called

vsal

---------

700sql

>

exec

emp_pkg.emp_update_ename(

'7935',

'helong');

雇員名稱:helong

sql>

call emp_pkg.emp_update_ename(

'7935',

'helong');

method called

sql>

select

*from

dual;

dummy

-----

x雇員名稱:helong





Oracle建立儲存過程 建立函式 建立包

一 oracle建立儲存過程 1 基本語法 create or replace procedure update emp sal name in out type,name in out type,is begin end update emp sal 2 寫乙個簡單的例子修改emp表的ename欄...

oracle儲存過程 建立儲存過程語句

一 建立儲存過程語句 語法 create or replace procedure testname argument1 type1,as begin end testname 例子 create orreplace procedure test name arg1 varchar2,arg2 nu...

Oracle 建立表,儲存過程

1.首先建立乙個customer 表 create table customer customerid varchar2 10 primary key,customername varchar2 20 custoemr varchar2 8 custoemrage int 2.插入四行資料 inse...