2

Oracleでストアドプロシージャを作成しました。しかし、mysql でこの手順を実行したいのですが、mysql で for ループを作成するにはどうすればよいですか。mysql の for ループについてはわかりません。

Create table student
  (
    Id number,
    Batch varchar2(2),
    Batch_roll_no number 
  )

Create or replace procedure assign_roll_no
Is
 V_roll_no number; 
Begin
For c1 in (select distinct batch from student order by 1)
Loop
Select nvl(Max(batch_roll_no+1),1)
Into v_roll_no
From student
 where batch = c1.batch;
  For c2 in ( select id from batch where batch_roll_no is null and batch= c1.batch
 Order by 1)
 Loop
Update student
set batch_roll_no=v_roll_no
Where id=c2.id
And batch= c1.batch;
V_roll_no:=v_roll_no + 1;
End loop;
End loop;
End;
4

1 に答える 1

1

このリンクに従ってください。疑問を解決する簡単な例を示します。場合によっては、リンクの内容が理解できない場合があります。疑問を持ってこのスレッドに戻ってください。

MySQL のループ

答えに関する限り、あなたが見ているシナリオの明確なイメージを Pravin に与えることを願っています。

DELIMITER $$ 
CREATE PROCEDURE loop_test() 
BEGIN  
WHILE c2 in (select id from batch where batch_roll_no is null and batch= c1.batch Order by 1)
DO  
Update student  
SET batch_roll_no=v_roll_no  
WHERE id=c2.id AND batch= c1.batch;  
V_roll_no:=v_roll_no + 1;  
END WHILE;  
END$$
DELIMITER ;
于 2013-10-04T11:52:35.637 に答える