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)文章
SQL Server 2005 安裝遇到的錯(cuò)誤提示和解決方法
在安裝SQL Server 2005時(shí)有時(shí)會(huì)出現(xiàn)意想不到的問題,如IIS,性能計(jì)數(shù)器,OWC11,無法配置外圍應(yīng)用的問題,下面筆者分享一下在安裝SQL Server 2005時(shí)常見問題解決方法2014-01-01Sql查詢MySql數(shù)據(jù)庫中的表名和描述表中字段(列)信息
這篇文章主要介紹了Sql查詢獲取MySql數(shù)據(jù)庫中的表名和描述表中列名數(shù)據(jù)類型,長度,精度,是否可以為null,默認(rèn)值,是否自增,是否是主鍵,列描述等列信息2017-12-12.Net Core導(dǎo)入千萬級(jí)數(shù)據(jù)至Mysql的步驟
最近在工作中,涉及到一個(gè)數(shù)據(jù)遷移功能,從一個(gè)txt文本文件導(dǎo)入到MySQL功能。數(shù)據(jù)遷移,在互聯(lián)網(wǎng)企業(yè)可以說經(jīng)常碰到,而且涉及到千萬級(jí)、億級(jí)的數(shù)據(jù)量是很常見的。今天我們就來談?wù)凪ySQL怎么高性能插入千萬級(jí)的數(shù)據(jù)。2021-05-05MySQL Left JOIN時(shí)指定NULL列返回特定值詳解
我們有時(shí)會(huì)有這樣的應(yīng)用,需要在sql的left join時(shí),需要使值為NULL的列不返回NULL而時(shí)某個(gè)特定的值,比如0。這個(gè)時(shí)候,用is_null(field,0)是行不通的,會(huì)報(bào)錯(cuò)的,可以用ifnull實(shí)現(xiàn),但是COALESE似乎更符合標(biāo)準(zhǔn)2013-07-07MySQL實(shí)現(xiàn)差集(Minus)和交集(Intersect)測試報(bào)告
MySQL沒有實(shí)現(xiàn)Minus和Intersect功能,就像它也沒有實(shí)現(xiàn)cube的功能一樣。2014-06-06MySQL使用binlog2sql工具實(shí)現(xiàn)在線恢復(fù)數(shù)據(jù)功能
binlog2sql 是大眾點(diǎn)評(píng)開源的一款用于解析 MySQL binlog 的工具,根據(jù)不同選項(xiàng),可以得到原始SQL、回滾SQL等,下面我們就來看看如何使用binlog2sql實(shí)現(xiàn)在線恢復(fù)數(shù)據(jù)功能吧2025-03-03