返回顶部

MySql存储过程基本使用

一、数据准备

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名',
  `sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

INSERT INTO `users`(`id`, `user_name`, `sex`) VALUES (1, '张学友', '');
INSERT INTO `users`(`id`, `user_name`, `sex`) VALUES (2, '迪丽热巴', '');
INSERT INTO `users`(`id`, `user_name`, `sex`) VALUES (3, '周杰伦', '');
INSERT INTO `users`(`id`, `user_name`, `sex`) VALUES (4, '杨幂', '');

 

二、入门案例

DROP PROCEDURE IF EXISTS proc1;

delimiter $$
create procedure proc1()
begin
   SELECT * from users;
end $$ 
delimiter ;


call proc1();

 三、参数传递in

DROP PROCEDURE IF EXISTS proc1;

delimiter $$
create procedure proc1(in in_username VARCHAR(100))
begin
   SELECT * from users WHERE user_name=in_username;
end $$ 
delimiter ;


call proc1('迪丽热巴');

 

四、参数传递out

DROP PROCEDURE IF EXISTS proc1;

delimiter $$
create procedure proc1(in in_username VARCHAR(100),out out_sex VARCHAR(20))
begin
   SELECT sex into out_sex from users WHERE user_name=in_username;
end $$ 
delimiter ;


call proc1('迪丽热巴',@user1);
select @user1 as '性别';

 

五、参数传递inout

inout表示从外部传入的参数经过修改后可以返回的变量,既可以使用传入变量的值也可以修改变量的值(即使函数执行完)

DROP PROCEDURE IF EXISTS proc1;

delimiter $$
create procedure proc1(inout inout_username VARCHAR(100),inout inout_sex VARCHAR(20))
begin
   SELECT CONCAT(user_name,'_',sex)  into inout_username from users WHERE user_name=inout_username;
     set inout_sex=CONCAT(inout_sex,'');
end $$ 
delimiter ;

set @inout_username='xiaohemiao';
set @inout_sex1='';
call proc1(@inout_username,@inout_sex);
select @inout_username;
select @inout_sex;

 

posted @ 2022-05-25 23:19  SportSky  阅读(71)  评论(0编辑  收藏  举报
作者:SportSky 出处: http://www.cnblogs.com/sportsky/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。