FOR sobre filas de consulta en SQL
Visita cada pedido como un record: la variable del bucle sostiene una fila a la vez.
-- FOR row IN query LOOP visits each result row as a record.
DO $$
DECLARE
line RECORD;
BEGIN
FOR line IN
SELECT o.id, c.name, o.total
FROM orders AS o
JOIN customers AS c ON c.id = o.customer_id
ORDER BY o.id
LOOP
RAISE NOTICE 'order % (%) totals %', line.id, line.name,
line.total;
END LOOP;
END;
$$;
Cómo funciona
line RECORDdeclara una variable con la forma de lo que la consulta devuelva.FOR line IN ... LOOPcorre el cuerpo una vez por fila, en el orden del ORDER BY.- Los campos se leen como
line.idyline.namedentro del bucle.
Palabras clave y builtins usados aquí
ASBEGINBYDECLAREDOENDFORFROMINJOINONORDERSELECTc
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 302
- Tokens
- 70
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 65 segundos.
Paso 3 de 4 en Consultas en el código; paso 15 de 23 en Procedimientos almacenados de PostgreSQL.