標籤:
即事先經過編譯並儲存在資料庫中的一段sql語言。
一、建立函數
建立格式:
CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
func_parameter:
param_name type
總結:函數的參數前不能有修飾符如,IN,OUT(不同於預存程序),調用時可直接調用,像系統函數一般使用。
mysql> DELIMITER $$
mysql> CREATE FUNCTION func_emsal(empno INT)
-> RETURNS DOUBLE(10,2)
-> COMMENT ‘ 查詢某個僱員的工資‘
-> BEGIN
-> RETURN(
-> SELECT sal
-> FROM employee
-> WHERE employee.empno=empno);
-> END $$
調用方式:SELECT func_emsal (empno);
二、預存程序
建立格式:
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
IN用於說明是傳入參數,OUT為返還結果的參數(即開始時沒有值,調用後有值),INOUT則充當兩者的角色
總結:IN,OUT,INOUT用於指定參數的類型,OUT參數的賦值使用set操作符(與局部變數賦值類似),調用時使用call,out參數要有@修飾。
舉例:
mysql> DELIMITER $$
mysql> CREATE PROCEDURE proce_emsal()
-> COMMENT ‘查詢所有僱員的工資‘
-> BEGIN
-> SELECT sal
-> FROM employee;
-> END$$
調用方式:CALL proce_emsal( );
mysql 預存程序與函數