sql >> データベース >  >> RDS >> Mysql

ステートメントにWHEREがあるのに、ストアドプロシージャが「データなし-ゼロ行がフェッチ、選択、または処理されました」というエラーをスローするのはなぜですか?

    継続ハンドラーを定義する必要があります:

    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. 単数形または複数形のデータベーステーブル名?

    2. OracleのEntityFrameworkサポートを使用してパスカルケースを強制するにはどうすればよいですか?

    3. PostgreSQLでテーブルの列を別のテーブルの列で更新​​します

    4. MySQLデータベースで検索するときに「%」記号に一致する