Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhiều con trỏ trong các vòng lồng nhau trong MySQL

Bạn cần xác định một KHỐI mới bên trong vòng lặp con trỏ đầu tiên của mình và sử dụng các Tuyên bố khác nhau trong khối đó.

Một cái gì đó như:

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. MySql count () để trả về 0 nếu không tìm thấy bản ghi

  2. Cách tham gia có nhiều bảng quan hệ và tìm nạp kết quả theo loại

  3. JSON_ARRAY () - Tạo một mảng JSON từ một danh sách các giá trị trong MySQL

  4. PDO các giá trị trùng lặp trong mảng

  5. Không thể thấy giá trị trường BIT của MySQL khi sử dụng SELECT