Stored procedure looping

Mr. Bart Pietercil bart.pietercil at gmail.com
Tue Dec 11 06:21:16 CST 2007


Hi List,

I don't see what is wrong with this, so maybe a couple more eyes can  
help me out ?


  create or replace procedure cm_spBuildDefaultRatingSystem()
   begin
   DECLARE mylastrecid Long;
   DECLARE counter INT;
   SET counter = 100;
   insert into tbl_rating_systems(rs_name,rs_description,creation_dt)  
values ('cm_spBuildDefaultRatingSystem','score system generated by  
CoreManager',NOW());
   set mylastrecid = select Last_RecID();
   REPEAT
   insert into tbl_score_levels 
(levelname,leveldescription,objptr_rs,ranking) values  
(counter,'--',mylastrecid,(100-counter)+1);
   SET counter = counter -1;
   UNTIL counter < 0
   END repeat
   exception
   when others then
   call cm_CoreErrorHandler('cm_spBuildDefaultRatingSystem');
   end;

This procedure is accepted and when run creates 2 records
1) 1 record in tbl_rating_systems--> perfect
2) 1 record in tbl_score_levels--> unexpected result it seems the  
loop runs only once. Why ?

clearly something is wrong in the repeat

when looking at the WIKI I found a couple of things different:


Example:

CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
     SET @x = 0;

     REPEAT
        SET @x = @x + 1;
        UNTIL @x > p1
     END REPEAT;
END


1)END REPEAT; --> when trying this the sqlparser gives an error on the ;
so probably the example is wrong


2) in the example an @-variable is used (@x)

However in other examples on the same page (While-loop)

CREATE PROCEDURE dowhile()
BEGIN
   DECLARE v1 INT DEFAULT 5;

   WHILE v1 > 0 DO
     ...
     SET v1 = v1 - 1;
   END WHILE;
END

a local scope variable is declared and used; so I suppose I can use  
local scope variables ?

Any ideas ?

TIA

Bart Pietercil







More information about the Valentina mailing list