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

Dlaczego moja procedura składowana zgłasza błąd „Brak danych — pobrano, wybrano lub przetworzono zero wierszy”, gdy w instrukcji znajduje się WHERE?

musisz zdefiniować procedurę obsługi kontynuacji:

DROP PROCEDURE IF EXISTS Test;
DELIMITER //

CREATE PROCEDURE Test()
BEGIN

    -- Our columns
    DECLARE name VARCHAR(45);
    DECLARE id INT DEFAULT -1;
    DECLARE done INT DEFAULT 0;
    -- Our cursor
    DECLARE cur CURSOR FOR SELECT name, id FROM MyTable WHERE id > 3;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    DROP TEMPORARY TABLE IF EXISTS TempTest;
    CREATE TEMPORARY TABLE TempTest
    (
    name VARCHAR(45) NOT NULL,
    id INT NOT NULL
    );

    -- Open our cursor
    open cur;

    -- Start our for loop
    forLoop: LOOP

    -- Get the row
    FETCH cur INTO name, id;
     IF done = 1 THEN
        LEAVE forLoop;
    END IF;
    INSERT INTO TempTest (name, id)
    VALUES ( name, id);

    END LOOP forLoop;

    -- Close the cursor
    CLOSE cur;

    -- NOW GET THE RESULTS
    SELECT * FROM TempTest;

END; //

DELIMITER ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć relację w środowisku MySQL Workbench

  2. Xamp; Apache Port 80 zajęty

  3. Jak modelować relacje przyjaźni

  4. Błąd podczas instalacji mysql2:Nie udało się zbudować natywnego rozszerzenia gem

  5. MySQL to dobry sposób na wstawienie wiersza, jeśli nie został znaleziony, lub zaktualizowanie go, jeśli zostanie znaleziony