Parámetros INOUT en SQL
Un procedimiento de pago que devuelve el recibo por su lista de parámetros.
-- An INOUT parameter carries a result back from a CALL.
CREATE PROCEDURE take_payment(
order_no INTEGER,
amount NUMERIC,
INOUT receipt TEXT DEFAULT NULL
)
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO payments (order_id, amount, paid_at)
VALUES (order_no, amount, now());
receipt := 'paid ' || amount || ' against order ' || order_no;
END;
$$;
CALL take_payment(102, 34.95);
Cómo funciona
INOUT receipt TEXT DEFAULT NULLes argumento y resultado a la vez.- El cuerpo registra el pago y luego asigna la cadena del recibo.
CALLimprime los valores INOUT como fila de resultado al volver.
Palabras clave y builtins usados aquí
ASBEGINCALLCREATEDEFAULTENDINOUTINSERTINTEGERINTOLANGUAGENULLNUMERICPROCEDURETEXTVALUES
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 371
- Tokens
- 73
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 67 segundos.
Paso 2 de 4 en Procedimientos y transacciones; paso 10 de 23 en Procedimientos almacenados de PostgreSQL.