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'这是由于编码不一致导致的。

时间: 2024-09-21 07:26:21

mysql 存储过程语法学习笔记的相关文章

Mysql 存储过程的学习笔记

技术要点 一个存储过程包括名字.参数列表,以及可以包括很多SQL语句的SQL语句集.下面为一个存储过程的定义过程: create procedure proc_name (in parameter integer)begindeclare variable varchar(20);if parameter=1 thenset variable='MySQL';elseset variable='PHP';end if;insert into tb (name) values (variable)

mysql存储过程语法

mysql教程存储过程语法 变量定义: declare variable_name [,variable_name...] datatype [default value]; 其中,datatype为mysql的数据类型,如:int, float, date, varchar(length) 例: declare l_int int unsigned default 4000000; declare l_numeric numeric(8,2) default 9.95; declare l_d

Mysql源码学习笔记 偷窥线程_Mysql

感觉代码有些凌乱,注释代码都写的比较随意,好像没有什么统一的规范,不同的文件中代码风格也有差异,可能Mysql经过了很多牛人的手之后,集众牛人之长吧.也可能是我见识比较浅薄,适应了自己的代码风格,井底之蛙了,总之还是怀着敬畏的心情开始咱的源码之旅吧.本人菜鸟,大神轻拍. Mysql可以启动起来了,应该怎么学习呢?总不能从main开始一步一步的看吧,Mysql作为比较底层的大型软件,涉及到数据库实现的方方面面,没有厚实的数据库理论基础和对Mysql各个模块相当的熟悉,从main开始势必会把自己引入

MySQL定时器EVENT学习笔记

 本文为大家介绍下MySQL定时器EVENT,要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1,感兴趣的朋友可以了解下 要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1    -- 查看是否开启定时器  SHOW VARIABLES LIKE '%sche%';    -- 开启定时器 0:off 1:on  SET GLOBAL event_scheduler = 1;    -- 创建事件  --每隔

整理Javascript基础语法学习笔记_javascript技巧

1.什么是变量 字面意思:变量是可变的量: 编程角度:变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品可以是衣服.玩具.水果...等.  2.表达出你的想法(表达式) 表达式与数学中的定义相似,表达式是指具有一定的值.用操作符把常数和变量连接起来的代数式.一个表达式可以包含常数或变量.   字符串表达式:"I" + "love" + "you" + mychar  //编写串表达式,值为字符串. 数值表达式

MySQL索引操作命令学习笔记

mysq索引类型:普通索引.唯一索引和主索引 1. 普通索引 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度.因此,应该只为那些最经常出现在查询条件(WHERE column = -)或排序条件(ORDER BY column)中的数据列创建索引.只要有可能,就应该选择一个数据最整齐.最紧凑的数据列(如一个整数类型的数据列)来创建索引. 2. 唯一索引 普通索引允许被索引的数据列包含重复的值.比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料&quo

MySQL创建全文索引学习笔记

使用索引是数据库性能优化的必备技能之一.在MySQL数据库中,有四种索引:聚集索引(主键索引).普通索引.唯一索引以及我们这里将要介绍的全文索引(FULLTEXT INDEX). 全文索引(也称全文检索)是目前seo搜索引擎使用的一种关键技术.它能够利用"分词技术"等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果.在这里,我们就不追根究底其底层实现原理了,现在我们来看看在MySQL中如何创建并使用全文索引. 全文索引只能在MyI

MySQL VIEW(视图)学习笔记

视图的作用: ■视图可以让查询变得很清楚: 如果您要找的数据存放在三张关系表里面,查看数据的时候,你就要写个联合查询了.换种方法,我把联合查询的数据放到视图里面,这样查询起来是不是更方便呢? ■保护数据库的重要数据,给不同的人看不同的数据: 假如您让别人帮您开发一套系统,但是你又想把真正表的暴露出来,这个时候视图是不是最好的选择呢? 视图的类型: mysql的视图有三种类型:MERGE.TEMPTABLE.UNDEFINED.如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的

mysql数据库入门学习笔记(1/2)

数据库一直没怎么重视,前段时间看了看mysql的基础知识,不看不知道,一看吓一跳,很多基础都竟然不知道,一直傻傻的用一些简单的.笨笨的方法,看了之后原来竟是如此如此,生活如此多娇,以前看不懂的,现在也懂点了,以前看到就头晕的,现在不晕了,发现一个奇怪的现象,应该很多人都有吧,当学一种知识的时候,而当时确实又是学不会.学不好的时候,随着时间的慢慢推移,再回过头来看的时候,发现比以前容易接受得多了--难怪这么多人到快挂的时候才后悔,不扯这么多了,把记录的笔记分享出来,方便日后查悦. 一.data数据