天天看點

Function函數

一.含義

一組預先編譯好的SQL語句的集合,了解成批處理語句

1.提高代碼的複用性

2.操作簡單

3.減少了編譯次數并且減少了和資料伺服器的連接配接次數,提高了效率

二.和存儲過程的差別

存儲過程:可以無傳回,也可以有多個傳回,适合做批量插入、批量更新

函數:有且僅有一個傳回,合适做資料處理後傳回一個結果,做查詢一個值

三.文法格式

CREATE FUNCTION 函數名(參數清單)RETUENS 傳回類型
BEGIN
 	函數體
END
           

注:

1.參數清單包含兩部分:參數名 參數類型

2.函數中僅有一句話,則可以省略begin end

3.使用delimiter語句設定結束标簽

四.調用文法

SELECT 函數名(參數清單)

執行函數中的所有語句 函數中有顯示的語句它也能顯示

有插入修改也能做,執行完把顯示值傳回出來

五.函數示例

Function函數

1.無參有傳回

CREATE FUNCTION func1() RETURNS INT
BEGIN
  DECLARE c INT DEFAULT 0;#定義局部變量c
	SELECT COUNT(*) INTO c #指派給c
	from student;
RETURN c;
END 
#調用函數
SELECT func1();
           

結果

Function函數

2.有參有傳回

CREATE FUNCTION func2(stuname VARCHAR(255)) RETURNS INT

BEGIN

 DECLARE age INT DEFAULT 0;

SELECT e.age INTO age  
FROM student e WHERE e.name = stuname;
RETURN age;

END
#調用函數
SELECT func2('小明');
           

3.定義使用者變量

CREATE FUNCTION func3(stuname VARCHAR(255)) RETURNS INT

BEGIN

 SET @ag = 0;#定義使用者變量

SELECT e.age INTO @ag #指派
FROM student e WHERE e.name = stuname;
RETURN @ag;

END
           

4.展示函數

#展示函數
SHOW CREATE FUNCTION func3;
           

5.删除函數

#删除函數
DROP FUNCTION func3;
           

參考文章:https://blog.csdn.net/wzhJava_Only/article/details/87712460