資料庫MySQL/mariadb知識點——函數

來源:互聯網
上載者:User

標籤:ram   ima   create   bsp   UNC   mysq   maria   修改   複用   

 

函數

函數,就是將一段代碼封裝到一個結構中,在需要執行該段代碼的時候,直接調用該結構(函數)執行即可。此操作,實現了代碼的複用。在 MySQL 中,函數有兩種,分別為:系統函數和自訂函數。

1、系統函數

顧名思義,系統函數就是系統定義好的函數,在需要的時候,我們直接調用即可。

任何函數都有傳回值(對於空函數,我們就認為其傳回值為),而且在 MySQL 中任何有傳回值的操作都是通過select來操作的,因此 MySQL 的函數調用就是通過select來實現的。

參考官方文檔:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

2、自訂函數(user-defined function:UDF)

自訂函數儲存在mysql.proc表中

  • 查看UDF列表

SHOW FUNCTIOIN STATUS;
  • 查看UDF定義

SHOW CREATE FUNCTION function_name
  • 刪除UDF 

DROP FUNCTION function_name
  • 調用自訂函數文法 
SELECT function_name(parameter_value,...)
  • 為變數賦值
SET parameter_name = value[,parameter_name = value...]
  • 查看變數

SELECT INTO parameter_name

樣本1:無參UDF

MariaDB [testdb]> CREATE FUNCTION simpleFun() RETURNS VARCHAR(20) RETURN "Hello World!“;

樣本2:有參數UDF 

MariaDB [testdb]> DELIMITER //  #修改結束符為//MariaDB [testdb]>CREATE FUNCTION deleteById(uid SMALLINT UNSIGNED) RETURNS VARCHAR(20)    -> BEGIN    ->DELETE FROM students WHERE stuid = uid;    -> RETURN (SELECT COUNT(uid) FROM students);    -> END//Query OK, 0 rows affected (0.01 sec)MariaDB [testdb]> DELIMITER ;  #定義完函數後再修改回來

樣本3:

自訂函數中定義局部變數文法:

DECLARE 變數1[,變數2,... ]變數類型 [DEFAULT 預設值]

說明:局部變數的作用範圍是在BEGIN...END程式中,而且定義局部變數語句必須在BEGIN...END的第一行定義

MariaDB [testdb]> DELIMITER //  #修改結束符為//MariaDB [testdb]> CREATE FUNCTION addTwoNumber(x SMALLINT UNSIGNED, Y SMALLINT UNSIGNED)    -> RETURNS SMALLINT    -> BEGIN    -> DECLARE a, b SMALLINT UNSIGNED DEFAULT 10;    -> SET  a = x, b = y;    -> RETURN a+b;    -> END//Query OK, 0 rows affected (0.01 sec)MariaDB [testdb]> DELIMITER ;  #定義完函數後再修改回來MariaDB [testdb]> SELECT addTwoNumber(8,9);  #調用UDF求和+-------------------+| addTwoNumber(8,9) |+-------------------+|                17 |+-------------------+
查看函數

查看函數,基本文法為:

SHOW FUNCTION STATUS;

查看函數定義 

SHOW CREATE FUNCTION function_name

  

資料庫MySQL/mariadb知識點——函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.