Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana mengonversi kursor SQL Server ke setara MySQL

Setara dengan MySQL akan menjadi seperti ini:

BEGIN
  DECLARE CurrentFirstName VARCHAR(300);
  DECLARE CurrentAge INT;
  DECLARE done INT DEFAULT FALSE;
  DECLARE CursorName CURSOR FOR
    SELECT FirstName, Age FROM Customers;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  OPEN CursorName;
  myloop: LOOP
    FETCH CursorName INTO CurrentFirstName, CurrentAge;
    IF done THEN
      LEAVE myloop;
    END IF;
    IF CurrentAge > 60 THEN
      insert into ElderCustomers values (CurrentFirstName,CurrentAge);
    END IF;
  END LOOP;
  CLOSE CursorName;
END;

Perbedaan besar terletak pada loop, menggunakan CONTINUE HANDLER untuk menyetel flag saat tidak ada lagi baris yang harus diambil, dan keluar dari loop saat flag disetel. (Kelihatannya jelek, tapi begitulah yang dilakukan di MySQL.)

Contoh ini menimbulkan pertanyaan mengapa ini tidak ditulis (lebih efisien, baik di SQL Server dan MySQL) sebagai:

INSERT INTO ElderCustomers (FirstName, Age)
SELECT FirstName, Age
  FROM Customers
 WHERE Age > 60



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui langsung Data MySQL

  2. Apakah ini pendekatan terbaik untuk membuat jejak audit?

  3. Laravel $q->where() antara tanggal

  4. Hasil Grup Concat Terpotong

  5. Di mana saya dapat menemukan file my.ini file untuk windows mysql server?