码迷,mamicode.com
首页 > 数据库 > 详细

mysql编写存储过程(1)

时间:2018-01-02 11:43:57      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:alt   逻辑   使用   varchar   img   开始   sql   查看   post   

存储过程:其实就是存储在数据库中,有一些逻辑语句与SQL语句组成的函数。由于是已经编译好的语句,所以执行速度快,而且也安全。

打开mysql的控制台,开始编写存储过程。

实例1:

编写存储过程:

技术分享图片

执行存储过程:

技术分享图片

查看执行结果:

 技术分享图片

语句解释:

1、delimiter //  ,声明分隔符:DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码(这里如果不懂的话,你可以通过试错的方法来理解)。

2、编写存储过程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...])

例子:

  1)create procedure proc1(out s int)  // 只有输出

  2)create procedure proc2(in p_in bigint)  // 只有输入

  3)create procedure proc15() // 没有输入与输出

  4)create procedure demo_multi_param(in id bigint,in name varchar(32),out c int) //多输入与输出

3、过程体的开始与结束使用BEGIN与END进行标识。

4、select count (*) into s from student; // 过程体,一系列的逻辑语句,sql语句

5、delimiter ; 用完了之后要把分隔符还原。

实例2:

技术分享图片

实例3、

技术分享图片

技术分享图片

结论:输出参数在过程中改变了,会得到保存。但是如果@p_out有预设的值,执行存储过程也不会认预设值,可以从第一个输出为null看出。

实例4、

技术分享图片

 注意:p_in虽然在存储过程中被修改,但并不影响@p_id的值,执行完语句之后,再执行@select @p_in。

实例5、

技术分享图片

结论:如果输入输出参数,那么在存储过程中,即会认输入的,如果在存储过程中改变了,那么输出也会认。

实例6:

技术分享图片

这个是一个多个输入,一个输出的例子。

实例7:

技术分享图片

说明:begin...end 之间是内部变量的作用域,一旦超过这个作用域,其内部声明的变量就结束了,就会变成外部作用域的变量。

 

mysql编写存储过程(1)

标签:alt   逻辑   使用   varchar   img   开始   sql   查看   post   

原文地址:https://www.cnblogs.com/boywwj/p/8046423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!