delimiter $$
-- delimiter [dɪ'lɪmɪtə] 分隔符;声明结束符号
-- procedure [prəˈsidʒər] 程序,过程 in 输入数据库,date定义变量,类型
CREATE proceduer eisc(out date varchar(20))
BEGIN
SELECT * FROM rota;
end
创建一个存储过程,将结果传给date
调用:
call eisc(@date)
select @date
--------------------------------------------------------------------------------------------------------------------------------------------------------
1、建立一张学生表
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) DEFAULT NULL,
`class` varchar(256) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '张三', '1班'),
('2', '李四', '2班'),
('3', '王五', '3班'),
('4', '麻子', '1班'),
('5', '老王', '3班');
2、建立存储过程
DROP PROCEDURE IF EXISTS fors;
-- procedure [prəˈsidʒər] 步奏,过程 drop [drɑp] 卸载; 判断存储过程fors存在就卸载;
-- delimiter [dɪ'lɪmɪtə] 分隔符,定界符
DELIMITER $$
CREATE PROCEDURE fors(OUT namess VARCHAR(1024))
-- procedure [prəˈsidʒər] 程序,过程 out 输出数据库,namess定义输出变量,类型
-- declare [dɪˈklɛr] 声明;声明变量 default [dəˈfɔlt] 默认值 student [ˈst(j)udnt] 学生 varchar 可变长字符串
-- 声明 rs 为 CURSOR [ˈkərsər] 光标;for [fɔr] 用于,关于,选择name列从数据库student ; default [dəˈfɔlt] 默认为0
-- continue [kənˈtɪnju] 继续; handler [ˈhændlər] 处理 ;for 在 数据库里面写入变量1
BEGIN
DECLARE a VARCHAR(500);
DECLARE Done, nameCount INT DEFAULT 0 ;
DECLARE rs CURSOR FOR SELECT NAME FROM student;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1 ;
-- 不申明结果为NULL
SET namess = '';
-- 打开游标
-- fetch [fɛtʃ] 获取;next from rs 下一个rs变量插入到变量a
OPEN rs;
FETCH NEXT FROM rs INTO a;
-- repeat [rəˈpit] 重复(循环)
REPEAT
SET nameCount = nameCount + 1 ;
-- 写入变量自加加
-- 判断变量的值不等于1,就执行,CONCAT()函数用于将多个字符串连接成一个字符串。
-- else 其他情况:等于1就直接赋值不需要添加符号
IF(nameCount != 1 ) THEN
SELECT CONCAT(namess,',' , a) INTO namess;
ELSE
SELECT CONCAT(namess, a) INTO namess;
END IF;
-- end if 结束
FETCH NEXT FROM rs INTO a;
UNTIL Done END REPEAT;
CLOSE rs;
END
################################
# 调用存储过程
CALL fors(@names);
SELECT @names;
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 16:08:17,Processed in 0.01491 second(s).