MYSQL存储过程

存储过程

创建存储过程语法:

create procedure 存储过程名 (参数1,参数2,。。。)

[存储过程选项]

begin

存储过程语句块

end;

存储过程的优点:

  • 提高了SQL语言的重用性,共享性和可移植性
  • 能够实现较快的执行速度,能够减少网络流量
  • 可以作为一种安全机制来利用

存储过程选项:

  • LANGUAGE SQL:表示存储过程语句块由SQL语言组成(如果不特意写默认就是该选项)
  • [NOT] DETERMINISTIC 表示存储过程的结果是否确定,deterministic表示执行结果确定的如果输入相同的参数将会得到相同的输出(默认值为deterministic)
  • [CONTAINS SQL | NO SQL |READS SQL DATA |MODIFIES SQL DATA ]表示使用SQL语句的限制,如果值为CONTAINS SQL 表示包含SQL语句,但不包含读或写数据的语句。NO SQL 表示不包含SQL语句。READS SQL DATA 包含读数据的语句。 MODIFIES SQL DATA表示包含写数据的语句。默认值为CONTAINS SQL。
  • SQL SECURITY {DEFINER|INVOKER}设置谁有权限来执行,默认值为DEFINER
  • COMMENT ‘string’,表示注释语句

存储过程有三种参数:

​ in参数:表示输入类型,参数只能输入到储存过程内部使用,不能对外进行返回参数,也不会修改外部的数据。

​ out 参数:表示输出类型,参数不能从外部输入存储过程使用,传入不了,但是在内部产生的数据可以返回到外部对原有数据进行修改覆盖。

​ inout 参数:表示输入输出类型,参数可以传入也可传出

存储过程的调用:call 储存过程名(参数);

__查询所有计算机学生利用存储过程不带参数
DELIMITER //
CREATE PROCEDURE p_student()
BEGIN
SELECT *
FROM student 
WHERE sdept='计算机系';
END;
//
DELIMITER ;
——查询所有计算机学生利用存储过程带参数
DELIMITER //
CREATE PROCEDURE p_student1(in ximing char(10))
BEGIN
SELECT *
FROM student 
WHERE sdept=ximing;
END;
//
DELIMITER ;

CALL p_student1('计算机系');
调用法二:
set @x='计算机系';
call p_stdent1(@x);

__计算任意给定课程的平均分,多参数
DELIMITER //
CREATE PROCEDURE p_stusp(IN kecheng CHAR(10),OUT num NUMERIC(5,2))
BEGIN 
SELECT AVG(grade)INTO num
FROM sc JOIN course ON sc.cno=course.cno
WHERE cname=kecheng;
SELECT CONCAT(kecheng,'课程的平均成绩为:',num,'分');
END;
//
DELIMITER;
SET @num=0;
CALL p_stusp('VB',@num);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值