MySQL創(chuàng)建并調(diào)用自定義函數(shù)方式
更新時間:2025年05月24日 09:38:08 作者:壹業(yè)
這篇文章主要介紹了MySQL創(chuàng)建并調(diào)用自定義函數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
創(chuàng)建方法拼接SQL
DELIMITER $$
DROP FUNCTION IF EXISTS genPerson$$
CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50)
BEGIN
DECLARE str VARCHAR(50) DEFAULT '';
SET @tableName=name;
SET str=CONCAT('create table ', @tableName,'(id int, name varchar(20));');
return str;
END $$
DELIMITER ;- (1)DELIMITER $$ 定義結(jié)束符。MySQL默認(rèn)的結(jié)束符是分號,但是函數(shù)體中可能用到分號。為了避免沖突,需要另外定義結(jié)束符。
- (2)DROP FUNCTION IF EXISTS genPerson$$ 如果函數(shù)genPerson已經(jīng)存在了,就刪除掉。
- (3)CREATE FUNCTION 創(chuàng)建函數(shù)genPerson,函數(shù)的參數(shù)是name,返回值是varchar(50)。
- (4)函數(shù)體放在BEGIN 與 END之間。
- (5)DECLARE 聲明變量,str類型是varchar(50),默認(rèn)值是空。
- (6)CONCAT連接多個字符串。
- (7)RETURN 返回拼接后的字符串str。
創(chuàng)建方法直接寫SQL
DELIMITER $$
DROP FUNCTION IF EXISTS getNthHighestSalary$$
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N = N -1;
RETURN (
# Write your MySQL query statement below.
select ifnull((select distinct id from user order by id desc limit 1 OFFSET n),null)
);
END調(diào)用方法
select genPerson('student');select getNthHighestSalary(2)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL使用Partition功能實現(xiàn)水平分區(qū)的策略
這篇文章主要介紹了MySQL使用Partition功能實現(xiàn)水平分區(qū),給大家提到了水平分區(qū)的5種策略,通過sql語句給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
MySQL實現(xiàn)簡單的創(chuàng)建庫和創(chuàng)建表操作方法
MySQL是最常用的數(shù)據(jù)庫,在數(shù)據(jù)庫操作中基本都是增刪改查操作,簡稱CRUD,這篇文章主要給大家介紹了關(guān)于MySQL實現(xiàn)簡單的創(chuàng)建庫和創(chuàng)建表操作方法的相關(guān)資料,需要的朋友可以參考下2023-11-11
MySQL 5.0.96 for Windows x86 32位綠色精簡版安裝教程
這篇文章主要介紹了MySQL 5.0.96 for Windows x86 32位綠色精簡版安裝教程,需要的朋友可以參考下2017-10-10

