一:存儲過程
存儲程式包括存儲函數和存儲過程.存儲過程有它獨特的優勢,存儲過程大大地減少了業務系統與資料庫的互動,一定程度降低了業務系統與資料庫的耦合.還有執行效率高,編寫友善,功能強大等等,但一定要注意其應用場景。一般使用與業務邏輯簡單穩定的場景,不适用業務邏輯複雜經常變換的場景.如果表換個結構,要改很多存儲過程,各有利弊吧.
存儲過程基本文法:
CREATE PROCEDURE pro_name([IN|OUT|INOUT] param_name type)
[characteristics...]continue_body
pro_name代表存儲過程名稱
in表示輸入參數,out表示輸出參數,inout既可以輸入又可以輸出,param_name代表參數名稱,type表示參數類型.
characteristics表示存儲過程特性(規定一些注釋資訊,誰來維權,存儲結果判斷等...),
continue_body是sql代碼的内容.
建立存儲過程:統計所有員工數量的存儲過程
CREATE PROCEDURE pro1(OUT param1 int)
BEGIN
SELECT COUNT(*)INTO param1 from employee;
END;
調用存儲過程
CALL pro1(@param1);
SELECT @param1
檢視存儲過程
SHOW PROCEDURE STATUS LIKE 'p%';
SHOW CREATE PROCEDURE pro1;
修改存儲過程:
ALTER {PROCEDURE | FUNCTION}pro_name[characteristics...]語句隻能改變存儲過程的特征,不能修改過程的參數以及過程體。
如果想做這樣的修改,必須先使用DROP PROCEDURE 删除過程,然後使用and CREATE PROCEDURE重建過程.
删除存儲過程
DROP PROCEDURE IF EXISTS db_name.produce_name;(就是資料庫.存儲過程名字)
二:存儲函數
存儲函數建立基本文法
CREATE FUNCTION func_name([func_parameter])
RETURNS type
[characteristics...]continue_body
建立根據id查詢員工名稱
CREATE FUNCTION func_test(parma1 INT)
return varchar2
is v_name nvarchar2;
BEGIN
select into v_name from employee where e_no=param1;
return v_name;
END;
存儲函數檢視
show FUNCTION STATUS LIKE 'func%'
SHOW CREATE FUNCTION mytest.func_test;
存儲函數使用
select function_name(參數);
存儲函數修改:
alter function function_name
[characteristics...]
删除存儲函數
DROP function IF EXISTS db_name.function_name;(就是資料庫.存儲函數名字)