PostgreSQL: Fundamentos de Operaciones con Cursores


Se ha recopilado información sobre las operaciones básicas de cursor en PL/pgSQL de PostgreSQL.

Entorno

  • psql 9.6
  • PostgreSQL 9.3

Cursor

En términos generales, se utiliza cuando se desea realizar un procesamiento secuencial para cada registro recuperado con SELECT.

Definición y uso de un cursor

Hay varias formas de escribir un cursor, pero comencemos con lo básico. En Oracle se llama cursor explícito, y en la documentación de PostgreSQL se refiere como Bound Cursor.

Definimos un cursor con CURSOR y preparamos una variable de tipo RECORD. Utilizamos LOOP para realizar el procesamiento en todas las filas del resultado de SELECT.

La palabra FOR después de CURSOR también puede ser reemplazada por IS. Aunque en la documentación oficial solo se menciona la escritura con FOR, también funcionará si se cambia a IS.

Abrimos el cursor, colocamos las filas del resultado de la consulta en la variable (en este caso, CR) y realizamos el procesamiento en todas las filas del cursor. Cuando el cursor ha procesado la última fila, salimos del bucle con EXIT. Finalmente, cerramos el cursor abierto.

La sección de EXIT usa una estructura IF para la condición, pero si solo desea ejecutar EXIT, puede escribirlo de manera más concisa con EXIT WHEN NOT FOUND;.

Además, el timing de FETCH es simple, por lo que se puede acortar más el código.

En este caso, la variable CR que almacena el registro solo es válida dentro del bucle.

Uso de parámetros con el cursor

Al igual que una función en un lenguaje de programación, un cursor puede tomar parámetros.

Uso de un cursor sin declararlo

Esto podría considerarse una aplicación avanzada de cursor. Personalmente, no lo uso con frecuencia. En Oracle se llama cursor implícito.

No se declara una variable de cursor. Sin embargo, se debe declarar una variable de registro. (En Oracle PL/SQL, no era necesario declarar una variable de registro).

(日本語) 関連記事