儲存過程與儲存函式

D.U.S.Tべ發表於2020-11-16

儲存過程

plsql中語法:
create [or replace] procedure 過程名(引數名 in|out 型別)
as
begin
end

//宣告pro_add_sal儲存過程,作用是給指定員工漲1000元工資,並列印出漲前和漲後工資
create or replace procedure pro_add_sal(plempno in number)
as
totalSal number;
begin
	select sal into totalSal from emp where empno=plempno;//查詢工資並賦值給totalSal
	dbms_output.put_line(totalSal);
	update emp set sal = sal+1000 where empno=plempno;
	dbms_output.put_line(totalSal+1000);
	commit;
end;

plsql呼叫:
begin
	pro_add_sal(1001);
end;

儲存函式

plsql中語法:
create [or replace] function 方法名(引數 in|out 型別) return 引數型別
as
定義變數名 型別要和return返回型別一致
begin
return 變數名;
end

//宣告fun_emp_totalsal儲存函式,查詢指定員工的年薪
create or replace function fun_emp_totalsal(plempno number) return number --in可以忽略,out不能忽略不寫
as
	totalsal number;--和上面return型別必須一致
begin
	select (sal*12)+nvl(bouns,0) into totalsal from emp where empno=plempno;
	return totalsal;
end

plsql呼叫:
declare
	totalsal number;
begin
	totalsal := fun_emp_totalsal(1001);
	dbms_output.put_line(totalsal);
end;

tips:上面儲存過程是直接語句列印輸出,這裡儲存函式也可以用另外方式列印

儲存過程與儲存函式的區別:
1.定義的語法不一樣procedure,function
2.function有返回值
3.function可以在select中進行呼叫
4.儲存過程可以通過out型別來返回引數

相關文章