MySQL創(chuàng)建并調(diào)用自定義函數(shù)方式
更新時(shí)間:2025年05月24日 09:38:08 作者:壹業(yè)
這篇文章主要介紹了MySQL創(chuàng)建并調(diào)用自定義函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
創(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é)束符是分號(hào),但是函數(shù)體中可能用到分號(hào)。為了避免沖突,需要另外定義結(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連接多個(gè)字符串。
- (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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL下常見的啟動(dòng)失敗與備份失敗問題的解決教程
這篇文章主要介紹了MySQL下常見的啟動(dòng)失敗與備份失敗問題的解決教程,示例環(huán)境基于Linux系統(tǒng),需要的朋友可以參考下2015-11-11
開啟bin-log日志mysql報(bào)錯(cuò)的解決方法
開啟bin-log日志mysql報(bào)錯(cuò):This function has none of DETERMINISTIC, NO SQL解決辦法,大家參考使用吧2013-12-12
MySQL使用Partition功能實(shí)現(xiàn)水平分區(qū)的策略
這篇文章主要介紹了MySQL使用Partition功能實(shí)現(xiàn)水平分區(qū),給大家提到了水平分區(qū)的5種策略,通過sql語句給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
MySQL實(shí)現(xiàn)簡單的創(chuàng)建庫和創(chuàng)建表操作方法
MySQL是最常用的數(shù)據(jù)庫,在數(shù)據(jù)庫操作中基本都是增刪改查操作,簡稱CRUD,這篇文章主要給大家介紹了關(guān)于MySQL實(shí)現(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
mysql遷移達(dá)夢(mèng)列長度超出定義的簡單解決方法
這篇文章主要介紹了mysql遷移達(dá)夢(mèng)列長度超出定義解決方法的相關(guān)資料,,在達(dá)夢(mèng)數(shù)據(jù)庫中,字符串長度的存儲(chǔ)方式與MySQL不同,導(dǎo)致遷移過程中出現(xiàn)數(shù)據(jù)長度不足的錯(cuò)誤,解決方法包括在MySQL中將varchar類型修改為varchar(10char)以強(qiáng)制字符存儲(chǔ),需要的朋友可以參考下2024-12-12

