MySQL debe saber debe conocer las notas de estudio del Capítulo 24 usando cursores

MySQL 5 agrega soporte para cursores.

Un cursor es una consulta de base de datos almacenada en el servidor MySQL. No es una instrucción SELECT, sino un conjunto de resultados recuperado por la instrucción. Después de almacenar el cursor, una o más filas se pueden mover hacia adelante o hacia atrás en las filas recuperadas.

A diferencia de la mayoría de los DBMS, los cursores MySQL solo se pueden usar en funciones y procedimientos almacenados.

Pasos para utilizar el cursor:
1. Debe declararse (definirse) antes de su uso. Este proceso en realidad no recupera datos, solo define la instrucción SELECT que se utilizará.
2. Después de la declaración, el cursor debe abrirse para su uso. Este proceso utiliza la instrucción SELECT previamente definida para recuperar los datos.
3. Saque (recupere) cada fila según sea necesario.
4. Al finalizar el uso, cierre el cursor.

Después de declarar el cursor, puede cambiar el cursor con frecuencia. Una vez que se abre el cursor, las operaciones de búsqueda se pueden realizar con frecuencia.

Crea un cursor:

CREATE PROCEDURE procedureName()
BEGIN
    DECLARE cursorName CURSOR
    FOR
    SELECT语句
END;

Una vez procesado el procedimiento almacenado, el cursor desaparece.

Abre el cursor:

OPEN cursorName;

La consulta se ejecuta cuando se ejecuta la instrucción OPEN y los datos recuperados se almacenan para navegar y desplazarse.

Cierra el cursor:

CLOSE cursorName;

La instrucción CLOSE libera toda la memoria interna y los recursos utilizados por el cursor. Si desea abrir el cursor nuevamente, llame a OPEN nuevamente.

Si el cursor no se cierra explícitamente, se cerrará automáticamente cuando se alcance la instrucción END.

Una vez que se abre el cursor, puede usar la instrucción FETCH para acceder a cada fila por separado. También moverá el puntero de fila interno del cursor hacia adelante para que la siguiente instrucción FETCH recupere la siguiente fila:

CREATE PROCEDURE procedureName()
BEGIN
    DECLARE o INT;

    DECLARE cursorName CURSOR
    FOR
    SELECT order_num FROM orders;

    OPEN cursorName;

    FETCH cursorName INTO o;

    CLOSE cursorName;
END;

Recupere datos en un bucle, desde la primera fila hasta la última fila:

CREATE PROCEDURE procedureName()
BEGIN
    DECLARE done BOOLEAN DEFAULT 0;
    DECLARE o INT;

    DECLARE cursorName CURSOR
    FOR
    SELECT order_num FROM orders;

    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;    -- SQLSTATE ‘02000’是未找到条件,即FETCH最后一条数据之后的数据时出现

    OPEN cursorName;

    REPEAT
        FETCH cursorName INTO o;
    UNTIL done END REPEAT;

    CLOSE cursorName;
END;

Las variables locales definidas por DECLARE deben definirse antes del cursor o CONTINUE HANDLER, y CONTINUE HANDLER debe definirse después del cursor.

Además de REPEAT, MySQL también admite declaraciones de bucle, que se repetirán hasta que salga manualmente usando la instrucción LEAVE. Por lo general, la sintaxis de la instrucción REPEAT es más adecuada para las operaciones del cursor.

Se puede crear una tabla en un procedimiento almacenado y también se puede llamar a otro procedimiento almacenado. Si se requieren parámetros al llamar a otro procedimiento almacenado:

CREATE PROCEDURE procedureName1()
BEGIN
    DECLARE o INT;

    CALL procedureName2(o);    -- 不需要@
END;

Supongo que te gusta

Origin blog.csdn.net/tus00000/article/details/111596534
Recomendado
Clasificación