百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql 存储过程语法学习笔记
分享文章到:

mysql 存储过程语法学习笔记

发布时间:01/15 来源: 浏览: 关键词:
mysql存储过程是各种数据库内置的一个功能,它可以提高数据库各种性能,下面我来给大家分享一下我学习存储过程的些知识,大家有兴趣一起来看看。

今天又把mysql存储过程学习了下,大家先看以下代码:

对语法不懂的朋友,可以详细看下语法结构.

 代码如下

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:
    Valid SQL routine statement

 

 代码如下

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);
+----+--------------------+
| id | title              |
+----+--------------------+
|  1 | 我来测试一记       |
+----+--------------------+
1 row in set (0.00 sec)

其中调用中文的时候可能会出现Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (latin1_swedish_ci,NUMERIC), (utf8_general_ci,COERCIBLE) for operation 'concat'这是由于编码不一致导致的。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有7人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板