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

HANDLER FOR NOT FOUNDはどのように機能し、その使用法は何ですか?

    HANDLER 例外をキャッチするためのものです。

    カーソルから読み取る場合、カーソルの終わりを超えて読み取ると、NOT FOUNDがスローされます。 NULLの無限のストリームを返すのではなく例外 、したがって、この例外をキャッチする必要があります。

    DECLARE val1 INT DEFAULT NULL;
    DECLARE done TINYINT DEFAULT FALSE;
    
    DECLARE c1 CURSOR FOR SELECT id FROM t1;
    
    -- when the NOT FOUND condition fires, "done" -- which defaults to FALSE -- will be set to true,
    -- and since this is a CONTINUE handler, execution continues with the next statement.   
    
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN c1;
    
    my_loop: 
    LOOP
    
      FETCH NEXT FROM c1 INTO val1; 
      IF done THEN -- this will be true when we are out of rows to read, so we go to the statement after END LOOP.
        LEAVE my_loop; 
      ELSE
        -- maybe do more stuff here
      END IF;
    END LOOP;
    
    -- procedure continues here...
    

    私の例から一部コピーここ 。




    1. c#を使用して.SQLスクリプトファイルを実行する方法

    2. DUALから1を選択:MySQL

    3. MySQLデータベースを別のコンピューターに転送するにはどうすればよいですか?

    4. リソースID#5を返すmySQLクエリ