存储:
DELIMITER $$USE `osdktest2`$$DROP PROCEDURE IF EXISTS `jj`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `jj`()
BEGIN
DECLARE v_interval INT UNSIGNED;
DECLARE v_timeslot INT UNSIGNED;
DECLARE v_pid INT UNSIGNED;
DECLARE cur_date CURSOR FOR
SELECT pid,TIMESTAMPDIFF(MINUTE,DATE_FORMAT(login_time,'%Y-%m-%d %H:%i'),DATE_FORMAT(logout_time,'%Y-%m-%d %H:%i')) AS interval_time
FROM test;
-- DECLARE CONTINUE HANDLER FOR NOT FOUND
SET v_timeslot = 0 ;
OPEN cur_date;
FETCH CURSOR INTO v_pid,v_interval;
WHILE v_timeslot <= v_interval DO
REPLACE INTO test1 (pid,interval_time) VALUES (v_pid,v_interval);
SET v_timeslot = v_timeslot + 1;
FETCH CURSOR INTO v_pid,v_interval;
END WHILE;
CLOSE cur_date;
-- select * from test1;
END$$DELIMITER ;报错:
Query : CREATE DEFINER=`root`@`localhost` PROCEDURE `jj`() BEGIN DECLARE v_interval INT UNSIGNED; declare v_timeslot int UNSIG...
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURSOR INTO v_pid,v_interval;
while v_timeslot <= v_interval do
replac' at line 15
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000请指教是哪里出问题了,总是不能编译通过。
DELIMITER $$USE `osdktest2`$$DROP PROCEDURE IF EXISTS `jj`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `jj`()
BEGIN
DECLARE v_interval INT UNSIGNED;
DECLARE v_timeslot INT UNSIGNED;
DECLARE v_pid INT UNSIGNED;
DECLARE cur_date CURSOR FOR
SELECT pid,TIMESTAMPDIFF(MINUTE,DATE_FORMAT(login_time,'%Y-%m-%d %H:%i'),DATE_FORMAT(logout_time,'%Y-%m-%d %H:%i')) AS interval_time
FROM test;
-- DECLARE CONTINUE HANDLER FOR NOT FOUND
SET v_timeslot = 0 ;
OPEN cur_date;
FETCH CURSOR INTO v_pid,v_interval;
WHILE v_timeslot <= v_interval DO
REPLACE INTO test1 (pid,interval_time) VALUES (v_pid,v_interval);
SET v_timeslot = v_timeslot + 1;
FETCH CURSOR INTO v_pid,v_interval;
END WHILE;
CLOSE cur_date;
-- select * from test1;
END$$DELIMITER ;报错:
Query : CREATE DEFINER=`root`@`localhost` PROCEDURE `jj`() BEGIN DECLARE v_interval INT UNSIGNED; declare v_timeslot int UNSIG...
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURSOR INTO v_pid,v_interval;
while v_timeslot <= v_interval do
replac' at line 15
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000请指教是哪里出问题了,总是不能编译通过。
DELIMITER $$USE `osdktest2`$$DROP PROCEDURE IF EXISTS `jj`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `jj`()
BEGIN
DECLARE v_interval INT UNSIGNED;
DECLARE v_timeslot INT UNSIGNED;
DECLARE v_pid INT UNSIGNED;
DECLARE cur_date CURSOR FOR
SELECT pid,TIMESTAMPDIFF(MINUTE,DATE_FORMAT(login_time,'%Y-%m-%d %H:%i'),DATE_FORMAT(logout_time,'%Y-%m-%d %H:%i')) AS interval_time
FROM test;
-- DECLARE CONTINUE HANDLER FOR NOT FOUND
SET v_timeslot = 0 ;
OPEN cur_date;
FETCH cur_date INTO v_pid,v_interval;
WHILE v_timeslot <= v_interval DO
REPLACE INTO test1 (pid,interval_time) VALUES (v_pid,v_interval);
SET v_timeslot = v_timeslot + 1;
FETCH CURSOR INTO v_pid,v_interval;
END WHILE;
CLOSE cur_date;
DEALLOCATE cur_date;
-- select * from test1;
END$$DELIMITER ;
错误信息:
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cursor into v_pid,v_interval;
end while;
close cur_date;
DEALLOCA' at line 20
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
请指教。
Warning Code : 1264
Out of range value for column 'interval_time' at row 97837
Warning Code : 1264
Out of range value for column 'interval_time' at row 97838
请问是哪里的逻辑错误了
CREATE PROCEDURE curdemo(IN V_GROUP INT)
-> BEGIN
-> DECLARE done INT DEFAULT 0;
-> DECLARE a INT;
-> DECLARE b CHAR(16);
->
-> DECLARE cur1 CURSOR FOR SELECT id,name FROM student where classid=V_GROUP;
-> DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
->
-> OPEN cur1;
->
-> REPEAT
-> FETCH cur1 INTO a, b;
-> select a,b;
-> UNTIL done END REPEAT;
->
-> CLOSE cur1;
-> END