今天又把mysql存储过程学习了下,大家先看以下代码:
对语法不懂的朋友,可以详细看下语法结构.
代码如下 | 复制代码 |
CREATE PROCEDURE and CREATE FUNCTION Syntax CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body CREATE proc_parameter: func_parameter: type: characteristic: routine_body: |
例
代码如下 | 复制代码 |
DELIMITER $$ /*改变语句的结束符*/ USE `test`$$ /*选择数据库*/ DROP PROCEDURE IF EXISTS `outgo`$$ /*存在outgo存储过程就删除*/ CREATE DEFINER=`root`@`%` PROCEDURE `outgo`(IN v_table CHAR(10), IN v_id INT(2), OUT v_value VARCHAR(32)) |
调用存储过程的语法是call.如下:
代码如下 | 复制代码 |
mysql> call outgo('user', 2, @a); +----+--------------+ | id | title | +----+--------------+ | 2 | 你大爷的 | +----+--------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> call outgo('user', 1, @a); |
其中调用中文的时候可能会出现Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (latin1_swedish_ci,NUMERIC), (utf8_general_ci,COERCIBLE) for operation 'concat'这是由于编码不一致导致的。