一、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:
--有參的函式
createorreplace
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引數
createorreplace
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引數
createorreplace
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查詢呼叫,
--檢視配合儲存函式
createorreplace
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...