typestar

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

  1. line RECORD declara una variable con la forma de lo que la consulta devuelva.
  2. FOR line IN ... LOOP corre el cuerpo una vez por fila, en el orden del ORDER BY.
  3. Los campos se leen como line.id y line.name dentro del bucle.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Consultas en el código; paso 15 de 23 en Procedimientos almacenados de PostgreSQL.

← Anterior Siguiente →