Доброго времени суток, коллеги!
Подскажите пожалуйста, куда мне копнуть, уже и не соображу .
CREATE TABLE `npogoda` (
`t` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`d` bigint(10) DEFAULT NULL
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
mysql> select * from npogoda;
+----+------+
| t | d |
+----+------+
| 1 | 59 |
| 2 | 3 |
| 3 | 0 |
| 4 | 20 |
| 5 | 78 |
| 6 | 56 |
| 7 | 36 |
| 8 | 28 |
| 9 | 17 |
| 10 | 76 |
+----+------+
10 rows in set (0.00 sec)
Есть хранимая процедура:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`deadka`@`%` PROCEDURE `proc_npogoda`(OUT p_out INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE t INT;
DECLARE cur CURSOR FOR SELECT t FROM npogoda;
OPEN cur;
FETCH cur INTO t;
set @max_diff = t;
SET p_out = t;
CLOSE cur;
END
Хочу для начала получить первое значение t в переменную, идущую формальным параметром и в "глобальную переменную".
Но в переменные пишутся NULL.
mysql> set @max_diff = 0,@m = 0;
Query OK, 0 rows affected (0.00 sec)
mysql> call proc_npogoda(@m);
Query OK, 0 rows affected (0.00 sec)
mysql> select @m,@max_diff;
+------+-----------+
| @m | @max_diff |
+------+-----------+
| NULL | NULL |
+------+-----------+
1 row in set (0.00 sec)
В то же время, если в переменные @max_diff и p_out записывать не значение t, а просто константы численные, то они благополучно присваиваются. А вот значение t не хочет фетчиться
.
Отредактированно deadka (22.06.2011 14:53:48)