2013-06-14 2 views
2

Я создал хранимую процедуру в oracle. Но я хочу запустить эту процедуру в mysql, как я могу создать цикл для цикла в mysql. Я не имею никакого представления о цикле в mysql.создать запрос на обновление с помощью хранимой процедуры в mysql

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; 

ответ

1

перейдите по этой ссылке. Это дает простые примеры для ваших сомнений. В случае, если вы не понимаете содержание ссылки. Вернитесь к этой теме со своими сомнениями.

Loops in 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 ; 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Joel

+0

Спасибо @Joel за предложение. Я внесла необходимые изменения в ответ. –

+0

И после этого вы получаете +1 от меня из-за этого :) также, я отредактировал ваш ответ на формат кода. В будущем рассмотрите возможность использования 4 пробелов для отступов кода, это будет означать S.O. для автоматического выделения кода. Смотрите красивые цвета? – Joel

Смежные вопросы