mysql存儲(chǔ)過程是各種數(shù)據(jù)庫內(nèi)置的一個(gè)功能,它可以提高數(shù)據(jù)庫各種性能,下面我來給大家分享一下我學(xué)習(xí)存儲(chǔ)過程的些知識(shí),大家有興趣一起來看看.
今天又把mysql存儲(chǔ)過程學(xué)習(xí)了下,大家先看以下代碼,對語法不懂的朋友,可以詳細(xì)看下語法結(jié)構(gòu),代碼如下:
- CREATE PROCEDURE and CREATE FUNCTION Syntax
- CREATE
- [DEFINER = { user | CURRENT_USER }]
- PROCEDURE sp_name ([proc_parameter[,...]])
- [characteristic ...] routine_body
- CREATE
- [DEFINER = { user | CURRENT_USER }]
- FUNCTION sp_name ([func_parameter[,...]])
- RETURNS type
- [characteristic ...] routine_body
- proc_parameter:
- [ IN | OUT | INOUT ] param_name type
- func_parameter:
- param_name type
- type:
- Any valid MySQL data type
- characteristic:
- COMMENT 'string'
- | LANGUAGE SQL
- | [NOT] DETERMINISTIC
- | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
- | SQL SECURITY { DEFINER | INVOKER }
- routine_body: --Vevb.com
- Valid SQL routine statement
例,代碼如下:
- DELIMITER $$ /*改變語句的結(jié)束符*/
- USE `test`$$ /*選擇數(shù)據(jù)庫*/
- DROP PROCEDURE IF EXISTS `outgo`$$ /*存在outgo存儲(chǔ)過程就刪除*/
- CREATE DEFINER=`root`@`%` PROCEDURE `outgo`(IN v_table CHAR(10), IN v_id INT(2), OUT v_value VARCHAR(32))
調(diào)用存儲(chǔ)過程的語法是call.如下:
- mysql> call outgo('user', 2, @a);
- +----+--------------+
- | id | title |
- +----+--------------+
- | 2 | 你大爺?shù)?nbsp; |
- +----+--------------+
- 1 row in set (0.00 sec)
- Query OK, 0 rows affected (0.00 sec)
- mysql> call outgo('user', 1, @a);
- +----+--------------------+
- | id | title |
- +----+--------------------+
- | 1 | 我來測試一記 |
- +----+--------------------+
- 1 row in set (0.00 sec)
其中調(diào)用中文的時(shí)候可能會(huì)出現(xiàn)Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (latin1_swedish_ci,NUMERIC), (utf8_general_ci,COERCIBLE) for operation 'concat'這是由于編碼不一致導(dǎo)致的。
新聞熱點(diǎn)
疑難解答
圖片精選