Gimmy2
03-04-2009, 15:39
conitnuando la discussione "Problema Trigger" precedentemente chiusa...
ho una tabella strada(citta1,citta2) e dato il nome di 2 citta devo trovare se esiste o meno una strada fra le due citta, i=0 se non esiste i=1 altrimenti.
DELIMITER $$
DROP PROCEDURE IF EXISTS `world_war`.`trova_strada`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `world_war`.`trova_strada`(in cittai varchar(15),in cittad varchar(15),out i integer)
BEGIN
declare n integer;
declare x integer;
declare city varchar(15);
declare cur cursor for select citta1 from strada where citta2=cittai;
open cur;
fetch cur into city;
set x=0;
set i=0;
select count(*) into n from strada where citta2=cittai;
if(n!=0) then
while x<n do
if(city=cittad) then
set i=1;
else
call trova_strada(city,cittad,@i);
end if;
fetch cur into city;
set x=x+1;
end while;
end if;
END $$
DELIMITER ;
questa procedura mi dà un errore:
"Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine trova_strada"
:confused:
ho una tabella strada(citta1,citta2) e dato il nome di 2 citta devo trovare se esiste o meno una strada fra le due citta, i=0 se non esiste i=1 altrimenti.
DELIMITER $$
DROP PROCEDURE IF EXISTS `world_war`.`trova_strada`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `world_war`.`trova_strada`(in cittai varchar(15),in cittad varchar(15),out i integer)
BEGIN
declare n integer;
declare x integer;
declare city varchar(15);
declare cur cursor for select citta1 from strada where citta2=cittai;
open cur;
fetch cur into city;
set x=0;
set i=0;
select count(*) into n from strada where citta2=cittai;
if(n!=0) then
while x<n do
if(city=cittad) then
set i=1;
else
call trova_strada(city,cittad,@i);
end if;
fetch cur into city;
set x=x+1;
end while;
end if;
END $$
DELIMITER ;
questa procedura mi dà un errore:
"Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine trova_strada"
:confused: