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

Con trỏ thủ tục được lưu trữ trong MySQL cho các câu lệnh đã chuẩn bị

Tôi có một số tin xấu và tốt cho bạn.

Đầu tiên là tin xấu.

Vì vậy, không có con trỏ động nào cho đến nay ... Ở đây bạn sẽ cần một cái gì đó như thế này.

Nhưng bây giờ tin tốt là:có ít nhất hai cách để vượt qua nó - sử dụng vw hoặc tbl.

Dưới đây, tôi đã viết lại mã của bạn và chế độ xem được áp dụng để tạo con trỏ 'động'.

DELIMITER //

DROP PROCEDURE IF EXISTS myproc;
CREATE PROCEDURE myproc(IN lang VARCHAR(400))

BEGIN

    DECLARE c VARCHAR(400);
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE cur CURSOR FOR SELECT name FROM vw_myproc;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    SET @select = concat('CREATE VIEW vw_myproc as SELECT * FROM ', lang, ' limit 3');
    PREPARE stm FROM @select;
    EXECUTE stm;
    DEALLOCATE PREPARE stm;

    SET @select = concat('SELECT * FROM ', lang, ' limit 3');
    PREPARE stm FROM @select;
    EXECUTE stm;
    DEALLOCATE PREPARE stm;

    SET @cnt = FOUND_ROWS(); 
    SELECT @cnt;
    IF @cnt = 3 THEN
          OPEN cur;
          read_loop: LOOP
            FETCH cur INTO c;
            IF done THEN
              LEAVE read_loop;
            END IF;

            #HERE YOU CAN DO STH WITH EACH ROW e.g. UPDATE; INSERT; DELETE etc
            SELECT c;

          END LOOP read_loop;
          CLOSE cur;
          DROP VIEW vw_myproc;
    ELSE
        SET c = '';
    END IF;

END//

DELIMITER ;

Và để kiểm tra quy trình:

CALL myproc('people_en');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cách nào để chèn một giá trị lớn vào DB mysql mà không thay đổi max_allowed_packet không?

  2. InnoDB mySQL không thể thiết lập BẬT XÓA ĐẶT ĐỊNH NGHĨA '. Làm thế nào để thiết lập?

  3. thứ tự theo .... số? Giúp tôi sắp xếp địa chỉ ip

  4. TẢI THÔNG TIN DỮ LIỆU:Chuỗi ký tự ut8mb4 không hợp lệ

  5. .Net ORM hoạt động tốt với MySQL