博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql之存储过程
阅读量:7225 次
发布时间:2019-06-29

本文共 2133 字,大约阅读时间需要 7 分钟。

 

 

 

 

1.存储过程

1.1体会封装

(1)创建一个存储过程

create PROCEDURE p1() -- 声明一个存储过程,begin和end之间就是sql语句的集合。BEGIN    insert into goods VALUES(null, 'why', '50');    select * from goods;END

(2)调用存储过程,之后想要使用begin和end之间的sql语句,就可以像调函数一样使用

-- 调用存储过程,执行了创建存储过程时begin和end之间的语句call p1();

1.2体会参数

(1)

-- 三个参数类型    -- in 表示参数只能传进来,输入型参数    -- out 表示输出型参数    -- inout 表示输入输出型参数-- 默认不给参数参数类型则是in输入型参数create PROCEDURE p2(in i int, inout names VARCHAR(50)) -- 声明一个存储过程,带参数的,in表示输入型参数,i为参数名,int为i这个参数的数据类型BEGIN                                                                                                    -- 参数2:inout表示输入输出型参数,names是参数名,varchar(50)表示names这个参数的数据类型是字符串格式的长度最长为50    update goods set name = names where id = i;    select names;    -- 查询看一下names这个变量的值    select name into names from goods where id = 1; -- into的意思是将查询出来的name值赋值给names这个变量 ENDset @names = '大鹅'; -- 定义一个变量names,赋值为大鹅,目的是给下面的调用用call p2(4, @names);    -- 调用p2这个存储过程,因为第二个参数是inout输入输出型参数,所以一定要进来一个之前被set过的变量,并加@,其实就像C语言中的指针。select @names; -- 查看一下这个names参数被带出来的值  大鹅

 

 (2)into关键字只能将查询出来的一个值赋值给一个变量,不能查询出来多个赋值给多个变量

 1.3体会控制

-- 如果flag为true则查询goods表中比nums小商品记录-- 如果flag为false则查询goods表中比nums大的商品记录-- if 条件结束后要加end if,判断是否相等要用=号而不是==create PROCEDURE p(int flag char(5), in nums int)BEGIN    if flag = 'true' THEN        select * from goods where num < nums;    ELSEIF flag = 'false' THEN        select * from goods where num > nums;    ELSE        select * from goods;    end if;ENDcall p('true', 20);

 

1.4 体会循环,使用存储过程做1 ~ 100的累加和

create PROCEDURE p4(in count int, out result_sum int)BEGIN        declare i int DEFAULT 0; -- 使用declare声明一个变量i,默认值是0        DECLARE sum int;        set sum = 0;    -- 使用set设置sum这个变量的值为0        while i <= count DO            set sum = sum + i;            set i = i + 1;        end WHILE;        set result_sum = sum;    -- 设置result_sum = sumENDset he = 0;call p4(100, @he);select @he;

1.5查看和删除存储过程

show PROCEDURE status; -- 查看当前创建的存储过程drop PROCEDURE p4;    -- 删除p4存储过程

如果存储过程写错了,在命令行下只能删除这个存储过程,然后在重新创建一个来达到修改的目的。如果是在Navicat for mysql可视化ide中,则可以在函数中,设计函数来改存储过程的逻辑代码。

 

 

 

存储过程建议sql语句在几百行左右才会用,并且跟账目相关的特别严谨的才会用到存储过程,普通的项目应该是用不到

 

转载于:https://www.cnblogs.com/whylinux/p/9925727.html

你可能感兴趣的文章
The DCI Architecture: A New Vision of Object-Oriented Programming(一篇具有里程碑式意义的论文)...
查看>>
RIP路由配置实例V2
查看>>
Bytescout Spreadsheet SDK for.NET
查看>>
我的友情链接
查看>>
Haproxy的三种保持客户端会话保持方式
查看>>
iOS的数学函数
查看>>
python 模块 chardet下载及介绍(转)
查看>>
能力工场--关于在JavaScript中使用EL表达式的问题
查看>>
NFS服务器设置
查看>>
s:iterator 中的status 使用方法
查看>>
cocos2d-x 源码剖析系列
查看>>
IT系统架构设计
查看>>
Nginx虚拟主机配置实践(一)
查看>>
细谈Spring(一)spring简介
查看>>
网络工程师的面试题
查看>>
nginx启动脚本
查看>>
常用输入法框架简介
查看>>
记录新机房建设。20130629
查看>>
安装ntop
查看>>
ssh远程登录讲解
查看>>