Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele kursorów w zagnieżdżonych pętlach w MySQL

Musisz zdefiniować nowy BLOK w swojej pierwszej pętli kursora i użyć różnych deklaracji w tym bloku.

Coś takiego:

BLOCK1: begin
    declare v_col1 int;                     
    declare no_more_rows boolean1 := FALSE;  
    declare cursor1 cursor for              
        select col1
        from   MyTable;
    declare continue handler for not found  
        set no_more_rows1 := TRUE;           
    open cursor1;
    LOOP1: loop
        fetch cursor1
        into  v_col1;
        if no_more_rows1 then
            close cursor1;
            leave LOOP1;
        end if;
        BLOCK2: begin
            declare v_col2 int;
            declare no_more_rows2 boolean := FALSE;
            declare cursor2 cursor for
                select col2
                from   MyOtherTable
                where  ref_id = v_col1;
           declare continue handler for not found
               set no_more_rows2 := TRUE;
            open cursor2;
            LOOP2: loop
                fetch cursor2
                into  v_col2;
                if no_more_rows then
                    close cursor2;
                    leave LOOP2;
                end if;
            end loop LOOP2;
        end BLOCK2;
    end loop LOOP1;
end BLOCK1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Procedura przechowywania nie zwraca wartości w MVC5

  2. java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid(I)Z

  3. Nieprawidłowe użycie UNION i ORDER BY?

  4. MySQL:wybierz wszystkie daty w zakresie, nawet jeśli nie ma żadnych rekordów

  5. Zapytanie wyboru CodeIgnitera