MySQL存储过程的使用

存储过程和函数是数据库中的一段SQL语句的集合。

studentinfo表数据:

存储过程的创建与调用

语法:

# 创建存储过程
DELIMITER $	            # 修改分隔符
CREATE PROCEDURE pro1()	# 创建存储过程
BEGIN		            # sql语句开始
	SELECT gender,COUNT(gender) ct FROM studentinfo GROUP BY gender ORDER BY ct DESC;
END$		            # sql语句结束
DELIMITER ;	            # 修改分隔符
# 调用存储过程
CALL pro1();

存储过程的查看和删除

语法:

存储过程变量的使用

语法:

# 存储过程变量
DELIMITER $	                                # 修改分隔符
CREATE PROCEDURE pro2()	                    # 创建存储过程
BEGIN	                                    # sql语句开始
	DECLARE var1 VARCHAR(50) DEFAULT '';	# 定义变量var1 varchar类型 默认为''
	DECLARE var2 INT DEFAULT 0;		        # 定义变量var2 int类型 默认为0
	SET var1 = 'hello word!';		        # 变量赋值
	SELECT COUNT(*) INTO var2 FROM studentinfo WHERE gender='男';	# 变量赋值
	SELECT var1,var2;			            # 查询变量
END$	                                    # sql语句结束
DELIMITER ;	                                # 修改分隔符
# 调用存储过程
CALL pro2();

存储过程的传参 

语法:

# 存储过程传参
DELIMITER $	                                            # 修改分隔符
CREATE PROCEDURE pro4(IN orderColumn VARCHAR(50),OUT columnNames VARCHAR(50))	# 创建存储过程
BEGIN		                                            # sql语句开始
	DECLARE sql1 VARCHAR(500) DEFAULT '';
	SET columnNames='id,学生姓名,年龄,性别,班级id';
	IF (orderColumn='' OR orderColumn IS NULL) THEN		# 如果为空
		SELECT * FROM studentinfo ORDER BY id;
	ELSE							                    # 否则
		SET sql1=CONCAT("SELECT * FROM studentinfo ORDER BY ",orderColumn,";");
		SET @SQL_sg=sql1;		                        # 转为全局变量
		PREPARE stmt_sg FROM @SQL_sg; 	                # 准备sql语句
		EXECUTE stmt_sg ; 		                        # 执行sql语句
		DEALLOCATE PREPARE stmt_sg;	                    # 释放sql语句
	END IF;
END$		# sql语句结束
DELIMITER ;	# 修改分隔符
# 调用存储过程
CALL pro4('',@columnNames);

SELECT @columnNames;

 

总结:

 存储过程和函数的好处

1、提高代码的复用性

2、减少数据在数据库和引用服务器之间的传输,提高效率。

3、减少代码层面的业务处理。

4、以编程的思维去编写sql代码

打卡第13天,欢迎对数据库感兴趣的朋友一起讨论、交流,请多指教!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值