cancel
Showing results for 
Search instead for 
Did you mean: 

loop error,pls

ximen
Participant
0 Kudos
3,024
declare @product_code char(10),@rowNR int,@Mrow int
set     i=1
select product_code,row_number() over(order by parent_id) as rowNR,parent_id into #FT_1 from product_code where parent_id='cp'
//select * from #ft_1
//select @mrow=max(rowNR) from #ft_1 
//select @mrow      
while  i<=29 LOOP
    select @product_code=product_code from #ft_1 where i=rownr
select @product_code
set i=i+1
end loop

select * from #t1

error loop alt text

Accepted Solutions (0)

Answers (3)

Answers (3)

justin_willey
Participant

Please post proper questions. If you don't know how to phrase them in English, just write them in your own language.

I fear you mis-understand the purposes of groups like these - they aren't here to do your work for you. If you have something you can't make work - explain what the problem is, what you have tried to do to solve it yourself, exactly what error you are getting and when, together with the version of the software, OS etc that you are using.

If you just post some code and say "error loop" - you are expecting someone else to set up a test environment, run your code etc just to find out what the problem is - not many people have the time or inclination to do that. You may do better to employ a consultant with the appropriate skills or use SAP's consulting services.

ximen
Participant
0 Kudos

Please help me to correction ,I uploaded the pictures of the error thanks,So I'll pay attention next time under my ability of expression

MarkCulp
Participant

I think the problem that you are having is that you are mixing WATCOM SQL with TSQL. The WHILE ... LOOP statement is WATCOM SQL whereas the TSQL variant of a WHILE statement does not use the LOOP keyword. You have been using TSQL procedures so you need to use a WHILE statement - i.e. remove the LOOP and END LOOP and add in a BEGIN ... END.

OR alternatively, switch to using WATCOM SQL.

HTH

ximen
Participant
0 Kudos

WATCOM SQL so I should go to where to find relevant learning materials

MarkCulp
Participant
0 Kudos

My answer contains the two relevant links for the two variants of the WHILE statement. You can find all of the documentation for SQL Anywhere at http://dcx.sybase.com/index.html

justin_willey
Participant
0 Kudos

You have a syntax error because you are running a series statements without any separators. You need a semi-colon between separate statements eg:

declare @product_code char(10),@rowNR int,@Mrow int
set     i=1;
select product_code,row_number() over(order by parent_id) as rowNR,parent_id into #FT_1 from      product_code where parent_id='cp';
//select * from #ft_1
//select @mrow=max(rowNR) from #ft_1 
//select @mrow      
while  i<=29 LOOP
select @product_code=product_code from #ft_1 where i=rownr;
select @product_code;
set i=i+1;
end loop

also you haven't declared i

ximen
Participant
0 Kudos

Unable to execute the statement stop i is not var

justin_willey
Participant
0 Kudos

as I said, you need to declare i before you can use it.

ximen
Participant
0 Kudos
declare @product_code char(10),@rowNR int,@Mrow int
declare i
set  i=1
select product_code,row_number() over(order by parent_id) as rowNR,parent_id into #FT_1 from      product_code where parent_id='cp'
//select * from #ft_1
//select @mrow=max(rowNR) from #ft_1 
//select @mrow      
while  i<=29 LOOP
select @product_code=product_code from #ft_1 where i=rownr;
select @product_code;
set i=i+1;
end loop

error for set i=1

MarkCulp
Participant
0 Kudos

(a) Your "declare i" is an incomplete statement - it needs a type. You likely want "declare i int"

(b) Did you read Justin's and my answer? You are mixing WATCOM SQL with TSQL and therefore you need to pick one. You are not going to anywhere with fixing your problems if you don't.

VolkerBarth
Contributor
0 Kudos

@mfkpie8: Have you read the answers by Justin and Mark? They clearly explain the problem (mixing T-SQL and Watcom-SQL syntax). And you are still mixing these dialects. Sigh.