亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用mysql自定義函數

發布時間:2020-08-03 10:11:48 來源:億速云 閱讀:218 作者:小豬 欄目:MySQL數據庫

這篇文章主要講解了如何使用mysql自定義函數,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

什么是函數:

  • 函數存儲著一系列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自定義函數有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济南市| 兰溪市| 拜城县| 遵义县| 秭归县| 萍乡市| 黄大仙区| 衡东县| 化德县| 昌都县| 建始县| 永平县| 利津县| 邵阳市| 高清| 瑞安市| 桐梓县| 东乡族自治县| 丽江市| 沾益县| 石家庄市| 色达县| 兴仁县| 纳雍县| 西乌| 华坪县| 祁东县| 张家港市| 固镇县| 黄山市| 卢龙县| 永宁县| 平果县| 高淳县| 天峻县| 英山县| 景东| 五常市| 苍梧县| 宁河县| 分宜县|