1. 程式人生 > 資料庫 >mysql自定義函式原理與用法例項分析

mysql自定義函式原理與用法例項分析

本文例項講述了mysql自定義函式原理與用法。分享給大家供大家參考,具體如下:

本文內容:

  • 什麼是函式
  • 函式的建立
  • 函式的呼叫
  • 函式的檢視
  • 函式的修改
  • 函式的刪除

首發日期:2018-04-18


什麼是函式:

  • 函式儲存著一系列sql語句,呼叫函式就是一次性執行這些語句。所以函式可以降低語句重複。【但注意的是函式注重返回值,不注重執行過程,所以一些語句無法執行。所以函式並不是單純的sql語句集合。】
  • mysql函式有自己的自定義函式(已經定義好了的函式),想了解更多的可以參考我的另一篇博文:mysql常用函式
  • 這裡主要介紹如何自定義函式。

補充:

  • 函式與儲存過程的區別:函式只會返回一個值
    ,不允許返回一個結果集。函式強調返回值,所以函式不允許返回多個值的情況,即使是查詢語句。
    -- 不行的程式碼:Not allowed to return a result set from a function
    create function myf()returns int 
    begin
    select * from student;
    return 100;
    end;

函式的建立:

  • 語法:
    create function 函式名([引數列表]) returns 資料型別
    begin
     sql語句;
     return 值;
    end;
    • 引數列表的格式是: 變數名 資料型別
  • 示例:
    -- 最簡單的僅有一條sql的函式
    create function myselect2() returns int return 666;
    select myselect2(); -- 呼叫函式
    
    --
    create function myselect3() returns int
    begin 
      declare c int;
      select id from class where cname="python" into c;
      return c;
    end;
    select myselect3();
    -- 帶傳參的函式
    create function myselect5(name varchar(15)) returns int
    begin 
      declare c int;
      select id from class where cname=name into c;
      return c;
    end;
    select myselect5("python");

補充:

  • 還可以有一些特別的選項,特別的選項寫在return 之後,begin之前,如:
    • comment:一個關於函式的描述
    • 還有一些比如sql security等選項,有興趣可以自行百度。這裡不講解,僅一提有此知識點。

函式的呼叫:

  • 直接使用函式名()就可以呼叫【雖然這麼說,但返回的是一個結果,sql中不使用select的話任何結果都無法顯示出來(所以單純呼叫會報錯),】
  • 如果想要傳入引數可以使用函式名(引數)
  • 呼叫方式【下面呼叫的函式都是上面中建立的。】:
    -- 無參呼叫
    select myselect3();
    -- 傳參呼叫
    select myselect5("python");
    select * from class where id=myselect5("python");

函式的檢視:

  • 檢視函式建立語句:show create function 函式名;
  • 檢視所有函式:show function status [like 'pattern'];

函式的修改:

  • 函式的修改只能修改一些如comment的選項,不能修改內部的sql語句和引數列表。
  • alter function 函式名 選項;

函式的刪除:

  • drop function 函式名;

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》

希望本文所述對大家MySQL資料庫計有所幫助。