mysql储存过程(1)

知识点:

  1. 创建储存过程、删除储存过程
  2. 储存过程的调用
  3. 变量的使用(全局变量和局部变量)
  4. 三种参数类型:in输入参数、out输出参数、inout既能输入一个值又能传出来一个值(尽量使用前两种)
  5. 储存过程的应用:应用储存过程验证用户登陆身份。

一. 创建储存过程(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: 

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;

猜你喜欢

转载自blog.csdn.net/yiguang_820/article/details/82016556