mysql 查看存储过程重新编译_【笔记】MySQL-存储过程

含义:一组预先编译好的SQL语句的集合,理解成批处理语句。

好处:1.提高代码的重用性

2.简化操作,每次直接调用即可

3.减少了编译次数,减少了数据库服务器连接次数,提高了效率

语法:

一、创建语法

create procedure 存储过程名(参数列表)

begin

存储过程体(一组SQL语句)

end

注意事项:

1.参数列表包含3部分:参数模式 参数名 参数类型

举例:in stuname varchar(20)

参数模式:

in:输入,该参数需要调用方传入

out:输出,该参数可以作为返回值

inout:既可以输入又可以输出,既需要传入值,又可以返回值

2.如果存储过程只有一句话,begin end可以省略

3.每条SQL语句必须;号结尾,存储过程的结尾需要前面使用delimiter声明结束符重新设置。

语法:delimiter 结束标记

举例:delimiter //

二、调用语法

call 存储过程名(实参列表);

案例:

1.不带参数的存储过程

CREATE PROCEDURE myp1()

BEGIN

INSERT INTO student(studentName) VALUES('lili','lucy','rose');

END

2.带in模式参数的存储过程

CREATE PROCEDURE myp2(in stName VARCHAR(10))

BEGIN

SELECT * FROM student WHERE studentName=stName;

end

CALL myp2('rose');

http://3.in多个参数的存储过程,并在存储过程中声明变量并使用

CREATE PROCEDURE myp3(in studentName VARCHAR(10),in studentAge INT)

BEGIN

DECLARE result VARCHAR(10) DEFAULT '';#声明并初始化变量

SELECT COUNT(*) INTO result #给result变量赋值

FROM student

WHERE student.studentName=studentName and student.studentAge=studentAge;

SELECT result;#打印变量

END

CALL myp3('Jerry',18);#调用

4.带out模式的存储过程

-- 根据学号返回名字

CREATE PROCEDURE myp4(in stuId int,out stuName VARCHAR(10))

BEGIN #存储过程体中无需return语句,会直接把值传入out参数

SELECT studentName INTO stuName

FROM student

WHERE studentId=stuId;

END

SET @sName='jer';#给变量赋值

SELECT @sName; #打印结果为‘jer’

call myp4(1,@sName);#也可以不提前给变量赋值,直接调用也可以

SELECT @sName;#打印结果为正确的返回值

5.out多个参数的存储过程

-- 根据学号返回名字,年龄

CREATE PROCEDURE myp5(in stuId int,out stuName VARCHAR(10),out stuAge INT)

BEGIN #存储过程体中无需return语句,会直接把值传入out参数

SELECT studentName,studentAge INTO stuName,stuAge

FROM student

WHERE studentId=stuId;

END

CALL myp5(2,@stuName,@sAge);

SELECT @stuName,@sAge;

6.inout模式参数的存储过程

#传入2个值,2个值翻倍并返回

CREATE PROCEDURE myp6(INOUT n1 int,INOUT n2 INT)

BEGIN

SET n1=n1*2;

SET n2=n2*2;

END

SET @n1=10;

SET @n2=20;

CALL myp6(@n1,@n2);

SELECT @n1,@n2;

三、删除存储过程

语法:DROP PROCEDURE 存储过程名;

DROP PROCEDURE p1;

四、查看存储过程

语法:SHOW CREATE PROCEDURE 存储过程名;

SHOW CREATE PROCEDURE p2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值