存储过程
这次的项目中看到专门DBA写的数据库存储过程,新生好奇,想要学习一番。看了一些书,发现基本都是概念介绍,看完之后你不一定会写。我觉得基本的知识要了解,然后再在具体的业务中去摸索才能学会。
第一次尝试
看书的时候看到一句话:• 存储函数具有返回值 • 存储过程没有返回值
这应该是函数和存储过程一个主要的区别。看下面的例子:
这是在navicat中创建的一个最最简单的存储过程,运行一下:
这个存储过程不是有返回值吗,这和书里的书法不一样啊。扔给大家一句话,能理解就理解不理解多看几遍就理解了:
函数是 将结果用 返回值的形式表示 ; 过程将返回结果利用参数流出去 所以说这里不是返回了返回值 而是 打印了一下参数而已。
利用存储过程插入一条数据 (练习)
1.介绍个概念:数据库变量
系统变量 : show variables like ‘version%’; 查看已version 开头的系统变量;
用户变量:以@开头的,用户变量跟mysql客户端是绑定的,设置的变量,只对当
前用户使用的客户端生效。也叫会话变量。
局部变量:begin end 之间的
我们用到的只是局部变量
把参数填好,in,out,inout这三种类型的参数区别自己去查吧。
BEGIN
DECLARE product_stock int DEFAULT 300; //定义product_stock的默认值为300
SELECT MAX(product_id) INTO new_product_id FROM product_info; //查询出原表中主键最大的一个值,赋给变量 new_product_id
SET new_product_id = new_product_id + 1; //new_product_id 变量值+1
INSERT INTO product_info VALUES(new_product_id,product_name,0,product_stock,'','',0,0,CURDATE(),CURDATE()); //简单的插入语句;这些变量中product_name是传入的参数
END
我也还在学习之中…