mysql函数创建与使用_mysql function函数创建与应用方法
這些語句創(chuàng)建存儲(chǔ)子程序。要在MySQL 5.1中創(chuàng)建子程序,必須具有CREATE ROUTINE權(quán)限,并且ALTER ROUTINE和EXECUTE權(quán)限被自動(dòng)授予它的創(chuàng)建者。如果二進(jìn)制日志功能被允許,你也可能需要SUPER權(quán)限,請(qǐng)參閱20.4節(jié),“存儲(chǔ)子程序和觸發(fā)程序的二進(jìn)制日志功能”。
默認(rèn)地,子程序與當(dāng)前數(shù)據(jù)庫教程關(guān)聯(lián)。要明確地把子程序與一個(gè)給定數(shù)據(jù)庫關(guān)聯(lián)起來,可以在創(chuàng)建子程序的時(shí)候指定其名字為db_name.sp_name。
如果子程序名和內(nèi)建的SQL函數(shù)名一樣,定義子程序時(shí),你需要在這個(gè)名字和隨后括號(hào)中間插入一個(gè)空格,否則發(fā)生語法錯(cuò)誤。當(dāng)你隨后調(diào)用子程序的時(shí)候也要插入。為此,即使有可能出現(xiàn)這種情況,我們還是建議最好避免給你自己的存儲(chǔ)子程序取與存在的SQL函數(shù)一樣的名字。
由括號(hào)包圍的參數(shù)列必須總是存在。如果沒有參數(shù),也該使用一個(gè)空參數(shù)列()。每個(gè)參數(shù)默認(rèn)都是一個(gè)IN參數(shù)。要指定為其它參數(shù),可在參數(shù)名之前使用關(guān)鍵詞 OUT或INOUT
注意: 指定參數(shù)為IN, OUT, 或INOUT 只對(duì)PROCEDURE是合法的。(FUNCTION參數(shù)總是被認(rèn)為是IN參數(shù))
RETURNS字句只能對(duì)FUNCTION做指定,對(duì)函數(shù)而言這是強(qiáng)制的。它用來指定函數(shù)的返回類型,而且函數(shù)體必須包含一個(gè)RETURN value語句
mysql教程> delimiter $$
mysql>
mysql> CREATE FUNCTION myFunction(
->???????? in_title VARCHAR(4),
->???????? in_gender CHAR(1),
->???????? in_firstname???? VARCHAR(20),
->???????? in_middle_initial CHAR(1),
->???????? in_surname?????? VARCHAR(20))
->
->?? RETURNS VARCHAR(60)
-> BEGIN
->?? DECLARE l_title?????????????? VARCHAR(4);
->?? DECLARE l_name_string???????? VARCHAR(60);
->
->?? IF ISNULL(in_title)? THEN
->????? IF in_gender='M' THEN
->???????? SET l_title='Mr';
->????? ELSE
->???????? SET l_title='Ms';
->????? END IF;
->?? END IF;
->
->?? IF ISNULL(in_middle_initial) THEN
->????? SET l_name_string=CONCAT(l_title,' ',in_firstname,' ',in_surname);
->?? ELSE
->????? SET l_name_string=CONCAT(l_title,' ',in_firstname,' ',
->?????????????????????????? in_middle_initial,' ',in_surname);
->?? END IF;
->
->?? RETURN(l_name_string);
-> END$$
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> delimiter ;
mysql>
mysql> select myFunction('Mrs','M','First','Middle','Last');
+-----------------------------------------------+
| myFunction('Mrs','M','First','Middle','Last') |
+-----------------------------------------------+
| NULL????????????????????????????????????????? |
+-----------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql>
mysql>
mysql> select myFunction(null,'M','First','Middle','Last');
+----------------------------------------------+
| myFunction(null,'M','First','Middle','Last') |
+----------------------------------------------+
| Mr First M Last????????????????????????????? |
+----------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql>
mysql> drop function myFunction;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
注:可能受到系統(tǒng)影響
受影響系統(tǒng):
MySQL AB MySQL 4.1.5
MySQL AB MySQL 4.1.4
MySQL AB MySQL 4.1.3-beta
MySQL AB MySQL 4.1.3-0
MySQL AB MySQL 4.1.2-alpha
MySQL AB MySQL 4.1.0-alpha
MySQL AB MySQL 4.1.0-0
MySQL AB MySQL 4.0.9-gamma
MySQL AB MySQL 4.0.9
MySQL AB MySQL 4.0.8-gamma
MySQL AB MySQL 4.0.8
MySQL AB MySQL 4.0.7-gamma
MySQL AB MySQL 4.0.7
MySQL AB MySQL 4.0.6
MySQL AB MySQL 4.0.5a
MySQL AB MySQL 4.0.5
MySQL AB MySQL 4.0.4
MySQL AB MySQL 4.0.3
MySQL AB MySQL 4.0.21
MySQL AB MySQL 4.0.20
MySQL AB MySQL 4.0.2
MySQL AB MySQL 4.0.18
MySQL AB MySQL 4.0.15
MySQL AB MySQL 4.0.14
MySQL AB MySQL 4.0.13
MySQL AB MySQL 4.0.12
MySQL AB MySQL 4.0.11-gamma
MySQL AB MySQL 4.0.11
MySQL AB MySQL 4.0.10
MySQL AB MySQL 4.0.1
MySQL AB MySQL 4.0.0
不受影響系統(tǒng):
MySQL AB MySQL 4.1.10a
MySQL AB MySQL 4.0.24
總結(jié)
以上是生活随笔為你收集整理的mysql函数创建与使用_mysql function函数创建与应用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 植物大战僵尸电脑版在线玩
- 下一篇: mysql删除完全重复数据库_MySQL