MySql存储过程的创建与使用及在thinkphp中如何调用笔记
学习sql的存储过程,笔记总结如下:
MySQL默认将分号,即“;”作为语句的分隔符。如果是这样的话,则一个存储过程将很难正常创建,因为它的BEGIN和END之间可以是任意数量的SQL语句,而每条SQL语句都以分号结束。所以,在创建存储过程时,必须重新定义分隔符。在创建完存储过程后,必须重新设置回原来的分隔符“;”。
1. 创建普通存储过程的基本格式
-- 创建存储过程
DELIMITER $ -- 声明存储过程的结束符
create procedure pro_test()
begin
-- 可以写多个sql
select * from admin where id = 1;
select * from user limit 5;
end $
2. 调用和删除存储过程
-- 调用存储过程
call pro_test(); -- 删除存储过程
drop procedure pro_test; -- 注意:不是pro_test()
3. 存储过程的参数说明
IN:表示参数从外部传入到存储过程内部使用
OUT:表示参数从过程里边把数据保存到变量中,交给外部使用,所有传入的必须是变量。如果说传入的out变量本身在外部有数据,那么在进入过程之后,第一件事就是被清空,设为null
INOUT:数据可以从外部传入到过程内部使用,同事内部操作之后,又会将数据返回给外部。
4. 创建带有输入参数的存储过程
delimiter $
create procedure pro_find(IN aid int)
begin
select * from admin where id = aid;
end $ -- 调用
call pro_find(3);
5. 创建带有输出参数的存储过程
delimiter $
create procedure pro_testout(out str varchar(20))
begin
set str = "test out";
end $
-- 调用
call pro_testout(@word);
-- 查看变量值
select @word;
6. 创建带有输入输出参数的存储过程
delimiter $
create procedure pro_testinout(inout n int)
begin
select n ;
set n = 500;
end $ -- 调用
set @n = 10;
call pro_testinout($n); -- 查看
select $n
7. 创建带有条件判断的存储过程
delimiter $
create procedure pro_testif(in num int, out str varchar(20))
begin
if num = 1 then
set str = '周一';
elseif num =2 then
set str = '';
elseif num = 3 then
set str = '';
else
set str = '';
end if;
end $ call pro_testif(5, @str); select @str;
8. 创建带有循环功能的存储过程
delimiter $
create procedure pro_testwhile(in num int, out result int)
begin
declare i int default 1;
declare vsum int default 0;
while i <= num do
set vsum = vsum + i;
set i = i + 1;
end while;
set result = vsum;
end $ call pro_testwhile(50, @result); select @result;
9. 使用查询结果赋值给变量(into)
delimiter $
create PROCEDURE pro_find(in aid int, out uname varchar(20))
begin
select username into uname from staff where id = aid;
end $ -- 调用
call pro_find(2, @name); select @name;
10. 删除存储过程
drop procedure pro_find;
11. 在thinkphp3中调用存储过程
query()执行的是查询(select)的SQL语句。
execute()执行的是插入(insert)和修改(update)的SQL语句。execute()方法将返回影响的记录数。
对于存储过程中,只有set语句时,需要使用M() -> execute($sql)来调用存储过程。
如果存储过程中,包含select语句是,可以使用execute或者query均可。
MySql存储过程的创建与使用及在thinkphp中如何调用笔记的更多相关文章
- MySQL存储过程_创建-调用
阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的"脚本" 创建存储过程 调用存储过程 存储过程体 语句块标签 存储过程的参数 in:向过程里传参 out:过程向 ...
- MySQL存储过程的创建及调用
阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 1.创建存储过程 2.调用存储过程 3.存储过程体 4.语句块标签 存储过程的参数 1.in:向过程里传参 2.out:过 ...
- mysql存储过程的创建和调用
描述:存储过程就是具有名字的一段代码,用来完成一个特定的功能.创建的存储过程保存在数据库的数据词典中. --创建一个名为GreetWorld的存储过程,拼接两个值 CREATE PROCEDURE G ...
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- 【转】图解MySql命令行创建存储过程
一 操作实例 首先登录mysql: 使用source命令,从命令行执行sql脚本,创建表: 创建第一个存储过程: 事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";&q ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- Mysql 存储过程基本语法
delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...
- Mysql存储过程总结
1. 关于MySQL的存储过程 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.好在MySQL 5.0终于开始已经支持存储过 ...
随机推荐
- sql 数据库使用注意事项
1.在对数据库表进行操作时,一定要注意当前操作的是哪一个数据库,否则很容易引起不必要的错误.对于master数据库中的数据文件,尽量不要去对其操作. 2.可通过图形方式对数据库进行备份操作,可通过数据 ...
- Salesforce LWC学习(三十四) 如何更改标准组件的相关属性信息
本篇参考: https://www.cnblogs.com/zero-zyq/p/14548676.html https://www.lightningdesignsystem.com/platfor ...
- 深入理解java虚拟机笔记Chapter3-垃圾收集器
垃圾收集器 垃圾收集(Garbage Collection,GC),它的任务是解决以下 3 件问题: 哪些内存需要回收? 什么时候回收? 如何回收? 本节补充知识: ① s:Survivor区 新生代 ...
- 剑指 Offer 04. 二维数组中的查找
链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/ 标签:数组.双指针.二分 题目 在一个 n * m ...
- 【模板】关于vector的lower_bound和upper_bound以及vector基本用法 STL
关于lower_bound和upper_bound 共同点 函数组成: 一个数组元素的地址(或者数组名来表示这个数组的首地址,用来表示这个数组的开头比较的元素的地址,不一定要是首地址,只是用于比较的& ...
- Python语言规范之Pylint的使用
1.Pylint是什么 pylint是一个Python源代码中查找bug的工具,能找出错误,和代码规范的运行.也就是你的代码有Error错误的时候能找出来错误,没有错误的时候,能根据Python代码规 ...
- 我的新书《C++服务器开发精髓》终于出版啦
一.千呼万唤始出来 亲爱的各位读者,我的新书<C++ 服务器开发精髓>终于终于终于与大家见面了,图书如下: 图书的封面设计很精美,当然内容一定不负众望.因出版社老师要求提供一张照片放到封面 ...
- JMeter定时器种类+详细教程举例
首先,我们先了解一下定时器的常见种类以及它的作用. 原文地址:https://www.cnblogs.com/istart/p/11184533.html 一.定时器种类+作用 上面是我截图的自己有道 ...
- MySQL 为什么使用 B+ 树来作索引?
什么是索引? 所谓的索引,就是帮助 MySQL 高效获取数据的排好序的数据结构.因此,根据索引的定义,构建索引其实就是数据排序的过程. 平时常见的索引数据结构有: 二叉树 红黑树 哈希表 B Tree ...
- 解决mac中adb: command not found
在Mac系统中,很多时候第一次在Android SDK中使用adb的时候.无法使用.会提示-bash: abd: command not found. 造成此类现象的原因是:未配置Android的环境 ...