Stored procedure looping
    Ivan Smahin 
    ivan_smahin at paradigmasoft.com
       
    Tue Dec 11 06:42:36 CST 2007
    
    
  
Hello Mr.,
Tuesday, December 11, 2007, 2:21:16 PM, you wrote:
> 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 ?
It should be: UNTIL counter >= 0
> 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
Fixed.
> 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 ?
Sure, you can.
-- 
Best regards,
Ivan Smahin 
Senior Software Engineer
Paradigma Software, Inc
Valentina - The Ultra-Fast Database
http://www.valentina-db.com
    
    
More information about the Valentina
mailing list