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

2021-10-24 05:31:09 字數 3361 閱讀 3676

一、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欄位

create or replace procedure update_emp

(v_empno varchar2,

v_ename varchar2

) is

begin

update emp set ename=v_ename where empno=v_empno;

end update_emp;

呼叫方法如下:

sql>exec  update_emp('7935','test');
2、有返回值的儲存過程

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

create or replace 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> var vsal number

sql> exec emp_out_sal('7935',:vsal);

pl/sql procedure successfully completed

vsal

---------

700sql> var vsal number

sql> call emp_out_sal('7935',:vsal);

method called

vsal

---------

700

二、oracle建立函式(function)

1、基本語法規則如下:

create or replace function (name in type, name in type, ...) return number is

result number;

begin

return (result);

end ;

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

create or replace 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> var vsla number

sql> call ret_emp_sal('7935') into :vsal;

method called

vsal

---------

700

三、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 or replace package body emp_pkg

is procedure emp_update_ename

(v_empno varchar2,

v_ename varchar2)is

vename varchar2(32);

begin

update emp set ename=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 is

vsal number(7,2);

begin

select sal into vsal from emp where empno=v_empno;

return vsal;

end;

end;

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

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

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

例項:

sql> var vsla 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 orreplace procedureupdate emp sal name inout type,name inout type,is begin endupdate emp sal 2 寫乙個簡單的例子修改emp表的ename欄位 cre...

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...