Oracle儲存函式,儲存過程

2022-09-18 15:48:11 字數 3384 閱讀 7939

一、oracle儲存函式:儲存的pl/sql語法塊,完成特定的功能。

1、語法: 函式關鍵字: function

(1)建立函式

create

[or replace

]function

<

function name>

[(param1,param2)

]return

is|as[

local declarations

]declare

.....

begin

executable statements;

return

result;

exception

exception handlers;

end;

(2)呼叫函式

--呼叫

--1.寫查詢呼叫

select fun1 from dual;

--2.pl/sql語法塊呼叫

declare

my_name varchar2(20);

begin

my_name := fun1;

dbms_output.put_line(my_name);

end;

2、函式的引數模式

(1)輸入引數 in:

--有參的函式

create

orreplace

function fun2(s_id number) return

varchar2

ast_name

varchar2(20

);begin

select sname into t_name from stu where sid =

s_id;

return

t_name;

end;

select fun2(4) from dual;

例:輸入in與輸出out引數

create

orreplace

function fun2(t_id number,t_name out varchar2) return

varchar2

asbegin

select sname into t_name from stu where sid =

t_id;

return

t_name;

end;

declare

stu_name

varchar2(20

);my_name

varchar2(20

);begin

stu_name :

= fun2(1

,my_name);

dbms_output.put_line(stu_name);

end;

(2)in out引數  

create

orreplace

function fun3(num1 in out number,num2 in out number) return

varchar2

ast_temp

number

;begin

t_temp :

=num1;

num1 :

=num2;

num2 :

=t_temp;

return num1 +

num2;

end;

declare

numa

number :=10;

numb

number :=20;

numc

number

;begin

dbms_output.put_line(numa ||'

--'||numb);

numc :

=fun3(numa,numb);

dbms_output.put_line(numa ||'

--'||numb);

end;

注意:1、引數要為變數,定值返回時無法賦值。

2、函式return要有返回值 就是end之前return語句,當呼叫函式時還需要宣告乙個變數接受返回值,即使沒有使用。

規範:引數v開頭,如v_name,臨時變數t_name (temp_name)。

二、oracle儲存過程

oracle儲存過程:將執行的過程儲存起來就是儲存過程。

1、語法 :儲存過程關鍵字 procedure

create

[or replace

]procedure

<

procedure name>

[(param1,param2)]is

|as[local declarations

]begin

executable statements;

exception

exception handlers;

end;

引數用法和儲存函式一樣

呼叫:略有不同

1.pl/sql語法塊

2.命令列 使用 execute 命令去呼叫  如 execute procedure_name(param1,param2);

三、區別

儲存過程和儲存函式的區別:

1、儲存函式有返回值,儲存過程沒有返回值

2、呼叫方式略有不同.. 函式和過程都支援 pl/sql呼叫

函式支援 (select)查詢直接呼叫 過程支援 execute 命令呼叫

3、儲存過程是否可以代替儲存函式? 可以代替,但是相容性問題,儲存過程後出現 。之前的專案要支援。

儲存函式有時更加方便,可以直接select查詢呼叫,

--檢視配合儲存函式

create

orreplace

view emp_v as

select e.*,yearsal(e.sal,e.comm) as "年薪" from

emp e;

--計算年薪的儲存函式

create

orreplace

function yearsal(v_sal number,v_comm number) return

number

ast_year

number

;begin

t_year :

= v_sal*

12+nvl(v_comm,0

);return

t_year;

end;

Oracle儲存過程和儲存函式

參看 oracle儲存過程 儲存函式 說明 儲存過程 儲存函式都是物件。包括表 檢視 索引 序列 同義詞等也是物件。概念 指儲存在資料庫中供所有使用者程式呼叫的子程式叫儲存 過程 儲存函式。特點 完成特定功能的程式。區別 儲存函式可以通過return子句返回乙個值。建立和使用儲存過程 用create...

Oracle 儲存過程 函式

儲存過程 函式 子程式有名字 儲存在資料庫 同過名字呼叫 建立的時候被編譯 可以被其他有名或者無名的塊呼叫 語法create or replace procedure testp1 as 宣告 begin 可執行 dbms output.put line hello world end 使用 exe...

Oracle 儲存過程 函式

儲存過程和函式在oracle中被稱為子程式,是指被命名的pl sql塊,這種塊可以帶有引數,可以被多次呼叫。儲存過程用於執行特定操作,而函式則用於返回特定的資料。儲存過程是儲存在資料庫中的有名字的pl sql程式塊,接受零個或多個引數作為輸入 input 或輸出 output 或既作輸入又作輸出 i...