mysql CREATE FUNCTION HelloWorld4()
成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站和服務(wù)器托管的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗(yàn)和案例。
- RETURNS VARCHAR(20)
- BEGIN
- ? RETURN 'Hello World!';
- END;
- //
Query OK, 0 rows affected (0.00 sec)
mysql select HelloWorld4() //
+---------------+
| HelloWorld4() |
+---------------+
| Hello World! ?|
+---------------+
1 row in set (0.00 sec) ...展開(kāi)mysql CREATE FUNCTION HelloWorld4()
- RETURNS VARCHAR(20)
- BEGIN
- ? RETURN 'Hello World!';
- END;
- //
Query OK, 0 rows affected (0.00 sec)
mysql select HelloWorld4() //
+---------------+
| HelloWorld4() |
+---------------+
| Hello World! ?|
+---------------+
1 row in set (0.00 sec)
UPDATE
`表名`
SET
`參加工作`
=
(SELECT
DATE_ADD(Birthday,
INTERVAL
`WorkYear`
YEAR));
會(huì)把所有的
`參加工作時(shí)間`
列修改為
Birthday
+
WorkYear
DATE_ADD函數(shù)使用說(shuō)明: DATE_ADD(date,
INTERVAL
expr
type);
第一個(gè)參數(shù)date,可以是date類型或者datetime類型;
第二個(gè)參數(shù)INTERVAL
expr
type;INTERVAL
是指明相加的間隔,
expr是表達(dá)式,間隔的值,可以為列名,如
`WorkYear`;type是指定那部分相加,如
YEAR,只相加YEAR部分,其它不變,可以為其它類型如:DAY_HOUR,MINUTE_SECOND
。
語(yǔ)法:Create function function_name(參數(shù)列表)returns返回值類型
函數(shù)體 函數(shù)名,應(yīng)合法的標(biāo)識(shí)符,不應(yīng)與系統(tǒng)關(guān)鍵字沖突。
一個(gè)函數(shù)應(yīng)該屬于某個(gè)數(shù)據(jù)庫(kù),可以使用db_name.funciton_name的形式執(zhí)行當(dāng)前函數(shù)所屬數(shù)據(jù)庫(kù),否則為當(dāng)前數(shù)據(jù)庫(kù)。
參數(shù)部分,由參數(shù)名和參數(shù)類型組成。
返回值類類型.注意,一定要有return返回值語(yǔ)句。
創(chuàng)建第一個(gè)函數(shù):
mysql DROP FUNCTION IF EXISTS SP_FUNC_DBDH_ONE -- 刪掉已存在函數(shù) DELIMITER -- 定義分隔符,必須要有 ,本例為 可以為得數(shù)字符,例如: $$,%%,**
mysql CREATE FUNCTION SP_FUNC_DBDH_ONE( PARA_VAR varchar(30)) -- 多個(gè)參數(shù)用,分割 參數(shù)
的類型必須是mysql列存在的類型
- RETURNS VARCHAR(100) -- 指定返回值類型,如果你不確定返回
文本長(zhǎng)度,可以使用text
- BEGIN
- DECLARE NAYIBU_FIR VARCHAR(30) DEFAULT 'THIS IS MY FIRST,'; -- 定義變量,設(shè)置默認(rèn)值
- SET NAYIBU_FIR = concat(NAYIBU_FIR,PARA_VAR);
- RETURN NAYIBU_FIR; -- 返回值
- END $$
后面有你在前面定義的分割符號(hào)
Query OK, 0 rows affected (0.00 sec)
mysql DELIMITER
調(diào)用自定義函數(shù),輸出結(jié)果如下:
mysql SELECT SP_FUNC_DBDH_ONE('PROGRAM');
+------------------------------+
| SP_FUNC_DBDH_ONE('PROGRAM') |
+------------------------------+
| 'THIS IS MY FIRST, PROGRAM |
+------------------------------+
1 row in set (0.00 sec)
MySQL 自己不帶有 to_char 這個(gè)函數(shù)的。
你要模仿 Oracle, 寫一個(gè) MySQL 的 TO_CHAR 函數(shù)?
這個(gè)恐怕有點(diǎn)麻煩。
因?yàn)?Oracle 的 TO_CHAR 是可以把 日期型的, 數(shù)值型的, 轉(zhuǎn)換為 字符類型。
你這個(gè)MySQL 下的 to_char , 只要轉(zhuǎn)換日期呢? 還是轉(zhuǎn)換 數(shù)字?
mysql CREATE FUNCTION HelloWorld4()
- RETURNS VARCHAR(20)
- BEGIN
- RETURN 'Hello World!';
- END;
- //
Query OK, 0 rows affected (0.00 sec)
mysql select HelloWorld4() //
+---------------+
| HelloWorld4() |
+---------------+
| Hello World! |
+---------------+
1 row in set (0.00 sec)
如果你會(huì)其它數(shù)據(jù)庫(kù)的話, 那么看看那個(gè) SQL 存儲(chǔ)過(guò)程編寫 參考手冊(cè) 對(duì)你會(huì)有些幫助。
mysql?SELECT
-???DATE_ADD('2014-03-17',?INTERVAL?2?MONTH)?AS?`第一步結(jié)果`,
-???DATE_FORMAT(DATE_ADD('2014-03-17',?INTERVAL?2?MONTH),?'%Y%m')?AS?`最后結(jié)果`;
+------------+----------+
|?第一步結(jié)果?|?最后結(jié)果?|
+------------+----------+
|?2014-05-17?|?201405???|
+------------+----------+
1?row?in?set?(0.00?sec)