继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

mysql数据库——创建存储过程(五)

php小白兔秀秀
关注TA
已关注
手记 60
粉丝 37
获赞 648

创建带有IN OUT类型参数的存储过程
DELIMITER //
CREATE PROCEDURE removerUserAndReturnUserName(IN showID INT UNSIGNED,OUT showName INT UNSIGNED)
BEGIN
DELETE FROM user WHERE id = showID;
SELECT count(ID) FROM user INTO showName;
END//
SELECT count(ID) FROM user INTO showName; /* 该语句中的 INTO 含义就是将 SELECT 语句结果的表达式返回到 showName 变量中 /
CALL removerUserAndReturnUserName(10,@nums); /* @nums 所代表的就是用户变量,可用 SELECT @nums 输出 /
用 DECLARE 声明的变量是局部变量,局部变量只能存在于 BEGIN...END 之间,且声明时必须置于 BEGIN...END 的第一行
而通过 SELECT...INTO.../SET @id = 07 这种方法设置的变量我们称之为用户变量,只能存在于当前用户所使用的客户端有效。
CALL rmUserAndRtUserNums(27, @nums);
SELECT @nums; //@nums - 就是用户变量
DECLARE声明的变量都是在BEGIN与END之间,是局部变量
SET @i = 7; //通过@或SET设置的变量称为用户变量
@变量
1.用户变量:以"@"开始,形式为"@变量名"
用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效
2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
3.会话变量:只对连接的客户端有效。
4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量
declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量
存储过程与自定义函数的区别
存储过程实现的功能要复杂一些;而函数的针对性更强
存储过程可以返回多个值;函数只能有一个返回值
存储过程一般独立的来执行;而函数可以作为其他sql语句的组成部分来出现
小节:
1、存储过程:是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理
2、参数:输入类型、输出类型、输入&&输出
3、创建:create.....procedure.......
4、注意事项:
(1)创建存储过程或者自定义函数时需要通过delimiter语句修改定界符。
(2)如果函数体或过程体有多个语句,需要包含在begin......end语句块中。
(3)存储过程通过cell调用。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP