学习sql的存储过程,笔记总结如下:

MySQL默认将分号,即“;”作为语句的分隔符。如果是这样的话,则一个存储过程将很难正常创建,因为它的BEGIN和END之间可以是任意数量的SQL语句,而每条SQL语句都以分号结束。所以,在创建存储过程时,必须重新定义分隔符。在创建完存储过程后,必须重新设置回原来的分隔符“;”。

1. 创建普通存储过程的基本格式

--创建存储过程

DELIMITER $ --声明存储过程的结束符

create procedurepro_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

selectn ;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 doset 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均可。

thinkphp mysql存储过程_MySql存储过程的创建与使用及在thinkphp中如何调用笔记相关推荐

  1. mysql存储过程_Mysql存储过程

    存储过程 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合.可将其视为批件,虽然它们的作用不仅限于批处理. 在我看来, 存储过程就是有业务逻辑和流程的集合, 可以在存储过程中创 ...

  2. kettle 调用存储过程_Mysql存储过程

    一.实验目的 · 加深和巩固对存储过程概念的理解. · 掌握存储过程的简单应用. 二.实验内容 1. 创建一存储过程,求l+2+3+-+n,并打印结果. 输入为n,结果为0. 2.调用上面的addre ...

  3. wpf mysql存储过程_MySQL存储过程的创建及调用

    # SQL语句:先编译后执行 存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需 ...

  4. mysql 分号 存储过程_MySql 存储过程

    自动增长列.字段值唯一性约束 create table aa( id int auto_increment primary key, sname varchar(32) unique ); inser ...

  5. 什么场景使用mysql的存储过程_mysql存储过程的使用

    直入正题吧:首先创建一张 students 表 create tablestudents( idint primary keyauto_increment, ageint, namevarchar(2 ...

  6. mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值

    我正在使用db方法在MVC5中使用Entity Framework.我使用Mysql作为数据库.我创建了一个过程,当Mysql中的Call Procedure它符合我的期望时.但是当我在MVC中使用过 ...

  7. mysql 执行存储过程_MySQL存储过程的3种循环

    1.概述 开发MySQL存储过程时,经常需要写循环逻辑:MySQL中支持三种循环分别是WHILE循环,REPEAT循环以及LOOP循环. 循环语句的格式如下: WHILE--DO--END WHILE ...

  8. 什么是mysql存储过程_mysql 存储过程

    存储过程 1.什么是存储过程 一组可编程函数,是为了满足特定功能的SQL语句集 存储过程就是具有名字的一段代码,用来完成个特定的功能 创建的存储过程保存在数据库的数据字典中 ​ 2.为什么要用存储过程 ...

  9. mysql怎么写存储过程_MySQL存储过程和函数简单写法

    MySQL存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic .. ...

最新文章

  1. hive定时清洗至mysql_hive,sqoop定时执行脚本举例
  2. MSM--Memcached_Session_Manager介绍及使用
  3. jquery基本操作笔记
  4. 《In Search of an Understandable Consensus Algorithm》翻译
  5. java 注解 target_详解JDK 5 Annotation 注解之@Target的用法
  6. restTemplate重定向问题 cookie问题
  7. 项目合作| 视频监控解决隧道洗车线的安全问题
  8. 文本框的值默认显示文本域上_13.4.4 键盘与文本事件
  9. 前端项目,将package.json数据放到项目某处使用
  10. 计算机专业和制药工程,制药工程本科专业介绍
  11. ImportError: Unable to import required dependencies: pytz: No module named ‘pytz‘
  12. mongodb下载安装和基本操作
  13. 用html制作的旅游相册名字唯美,好听的相册名字
  14. 机器学习全系列经典书籍推荐
  15. 数学建模常用算法:人工鱼群算法(AFAS)求解二元函数最小值+限定x,y范围测试【java实现--详细注释+Matlab绘制小鱼游动过程】
  16. WIN10计算机不支持3D游戏怎么办,win10电脑3d设置在哪里设置
  17. linux wakeup,linux内核3.4基于wakeup
  18. mac下面如何修改只读文件
  19. java过滤汉字和英文,java判断及过滤汉字
  20. 淘宝直通车关键数据 如何利用直通车获取手淘搜索流量 如何利用定向操作获得猜你喜欢流量

热门文章

  1. 三菱FX 系列PLC 编程通信协议总览
  2. DL应用:query生成和query推荐
  3. 基于SMB文件共享传播的新型蠕虫病毒***的紧急防范
  4. python的tab自动补全
  5. Raid3.0数据丢失怎么办
  6. Server.UrlEncode、HttpUtility.UrlDecode的区别
  7. log4J配置及在web.xml文件中的配置
  8. linux系统中用户和组的管理
  9. curl 请求日志_Java 日志实践:简明配置、日志抽样和级别动态修改
  10. oracle11g arm,linux最全的需要oracle11g的rpm包