10分钟学会写一个简单的Mysql存储过程

  • 一、什么是存储过程
  • 二、存储过程怎么创建
  • 三、查看
  • 四、执行
    • 1、执行说明
    • 2、开始执行
  • 五、删除存储过程
  • 六、Mysql高版本:this is incompatible with sql_mode=only_full_group_by 问题

一、什么是存储过程

二、存储过程怎么创建

  • Mysql中存储过程和函数的写法
  • 需求:输入用户名,模糊查询,返回数量
  • 执行,不报错就是创建成功了
CREATE PROCEDURE search_user_name ( #search_user_name为存储过程的名字IN search_name VARCHAR (20),#传入的参数OUT count_number INT #返回的参数
) READS SQL DATA #程序中包含读数据的语句
BEGINSELECTCOUNT(*) INTO count_numberFROM`user`WHERE`name` LIKE CONCAT('%', search_name, '%');END

三、查看

  • mysql查看存储过程函数,函数查看同理,把 PROCEDURE 改为 FUNCTION 即可
SELECT `name` FROM mysql.proc WHERE db = 'test' and `type` = 'PROCEDURE'   #查看指定数据库test中的存储过程
SHOW PROCEDURE STATUS #查看所有数据库的存储过程
SHOW CREATE PROCEDURE search_user_name #查看存储过程的创建代码

四、执行

1、执行说明

  • mysql中如何运行存储过程_MySQL存储过程如何操作
  • 带返回值:Mysql带返回值与不带返回值的2种存储过程

2、开始执行

  • 查询名字中带有 的用户的 数量
CALL search_user_name('李', @nameCount);
SELECT @nameCount;
  • 输出
@nameCount
2

五、删除存储过程

  • MySQL删除存储过程(DROP PROCEDURE)
  • sql语句:删除名为 search_user_name 的存储过程
DROP PROCEDURE search_user_name;
  • 返回结果
[SQL]DROP PROCEDURE search_user_name;
受影响的行: 0
时间: 0.085s
  • 删除之后再执行 SHOW CREATE PROCEDURE search_user_name,名为 search_user_name 的存储过程不存在,提示如下
[SQL]SHOW CREATE PROCEDURE search_user_name[Err] 1305 - PROCEDURE search_user_name does not exist

六、Mysql高版本:this is incompatible with sql_mode=only_full_group_by 问题

  • 如果运行的过程中报错:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
  • 这个问题是由于Mysql的版本太高导致的。
  • 百度输入 this is incompatible with sql_mode=only_full_group_by 搜索 点击搜索
  • 或者 直接移步 5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案
  • 或者 看我这篇 SQL报错:this is incompatible with sql_mode=only_full_group_by

本文链接:https://my.lmcjl.com/post/12655.html

展开阅读全文

4 评论

留下您的评论.