知识点:
- 创建储存过程、删除储存过程
- 储存过程的调用
- 变量的使用(全局变量和局部变量)
- 三种参数类型:in输入参数、out输出参数、inout既能输入一个值又能传出来一个值(尽量使用前两种)
- 储存过程的应用:应用储存过程验证用户登陆身份。
一. 创建储存过程(how2java为数据库)
DELIMITER$$
CREATE PROCEDURE how2java.procedure6()
BEGIN
SELECT name,hp,damage FROM test1;
END$$
DELIMITER;
二. 变量
2.1 全局变量:全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。
全局变量的定义和赋值:set @adc=33;
set @adc=33;
使用@adc
DELIMITER$$
CREATE PROCEDURE how2java.procedure6()
BEGIN
SELECT @abc;
END$$
DELIMITER;
2.2 局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内部,离开该函数后再使用这种变量是非法的。
局部变量的定义:必须先用Declare命令定以后才可以使用,declare 变量名 数据类型;
局部变量的赋值方法:set 变量名=表达式;
DELIMITER$$
CREATE PROCEDURE procedure6()
BEGIN
DECLARE aa INT(10);
SET aa=33;
SELECT aa;
END$$
DELIMITER;
调用储存过程procedure5:
扫描二维码关注公众号,回复:
2975729 查看本文章
CALL procedure5();
显示结果 aa=33;
三. 三种参数类型:in输入参数、out输出参数、inout输入参数
3.1 in输入参数的使用
DELIMITER$$
CREATE PROCEDURE procedure6(IN aa INT(10))
BEGIN
SELECT CustomerName,Address,City FROM test1 WHERE id=aa;
END$$
DELIMITER;
调用储存过程procedure6
CALL procedure6(3);
3.2 out输出参数的使用
第一步:1.创建储存过程;2.声明全局变量aa;3.out为输出aa;4.为aa赋值3;
DELIMITER$$
CREATE PROCEDURE how2java.procedure3(OUT aa INT(10))
BEGIN
SET aa=3;
END$$
DELIMITER;
第二步:定义@test用来接收aa的值
CALL procedure3(@test);
第三步:
SELECT @test;
3.3 inout输入参数的使用
第一步:
DELIMITER$$
CREATE PROCEDURE procedure5(INOUT aa INT(10))
BEGIN
SELECT aa;
SET aa=33;
SELECT aa;
END$$
DELIMITER;
第二步:
SET @dd=4;
第三步:调用储存过程procedure5
CALL procedure9(@dd);
查询第一次返回结果:aa=4;
查询第二次返回结果:aa=33;
第四步:
SELECT @dd;
返回结果为:@dd=33;
四.删除储存过程
DROP PROCEDURE procedureName;
问题:
1.DELIMITER $$中的$$是什么意思?
在定义过程时,使用DELIMITER $$命令将语句的结束符号从分号 ; 临时改为两个$$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。既为了避免存储过程中分号(";")结束语句。
(醉了,csdn编辑器对$$相当感冒。)
2.SET @dd=4;如此声明变量为什么必须加@符号?
规定。设置全局变量:set @adc=33;