Ciao
Avevo qualche infarinatura in sql2000 di MS, ma ora usando MySql mi trovo con qualche problema, in particolare sulle StoreProcedures.
questa store:
codice:
DELIMITER // 
CREATE PROCEDURE prova (OUT tot INT,OUT c1 INT) 
  BEGIN 
  DECLARE cur2 CURSOR FOR SELECT count(*) FROM prove.old WHERE flag <> 0; 
  OPEN cur2; 
  FETCH cur2 INTO tot; 
  CLOSE cur2; 
  set c1 = tot; 
  END; // 
DELIMITER ;
e il successivo richiamo
CALL prova(@tot,@c1);
select @tot,@c1;
risponde correttamente:
+-------+-------+
| @tot | @c1 |
+-------+-------+
| 33322 | 33322 |
+-------+-------+
1 row in set (0.00 sec)

Se aggiungo un cursore nella SP, non funge neanche il codice precedente;
codice:
DELIMITER //
CREATE PROCEDURE prova (OUT tot INT,OUT c1 INT, OUT c2 INT)
BEGIN
	DECLARE done 		INT;
	DECLARE ip_start  	BIGINT;
	DECLARE ip_to  		BIGINT;
	DECLARE city_code  	INT;
	DECLARE flag		TINYINT;

        DECLARE cur2 CURSOR FOR SELECT count(*) FROM prove.old WHERE flag <> 0;
        DECLARE cur1 CURSOR FOR SELECT * FROM prove.old WHERE flag <> 0;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
		
		OPEN cur2;
		FETCH cur2 INTO tot;
		CLOSE cur2;
		
	set c1 = 0;	set c2 = 0;	set done = 0;
		
	OPEN cur1;
	REPEAT
	  FETCH cur1 INTO ip_start,ip_to,city_code,flag;
		  IF NOT done THEN
						IF flag = 1 THEN 
							SET c1 = c1 + 1; 
							ELSE 
							SET c2 = c2 + 1;
						END IF;
		
		  END IF;
	UNTIL done END REPEAT;
	CLOSE cur1;

END; //
DELIMITER ;
al richiamo:
CALL prova(@tot,@c1,@c2);
select @tot,@c1,@c2;
la risposta è:

mysql> CALL prova(@tot,@c1,@c2);
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select @tot,@c1,@c2;
+------+------+------+
| @tot | @c1 | @c2 |
+------+------+------+
| 0 | 0 | 0 |
+------+------+------+
1 row in set (0.00 sec)

perchè? dove sbaglio?
grazie in anticipo
JeanPaul