typestar

EXECUTE y format() en SQL

SQL armado en tiempo de ejecución, con format() haciendo el quoting que un pegote arruinaría.

-- EXECUTE runs SQL built at run time; format() quotes it safely.
-- Dynamic strings stay lowercase: they are data here, not statements.
DO $$
DECLARE
    tally BIGINT;
    chosen TEXT := 'products';
BEGIN
    EXECUTE format('select count(*) from %I', chosen)
    INTO tally;
    RAISE NOTICE '% holds % rows', chosen, tally;
END;
$$;

Cómo funciona

  1. format('... %I', chosen) entrecomilla el identificador con seguridad — la inyección no tiene costura.
  2. EXECUTE ... INTO tally corre la cadena armada y captura el resultado.
  3. La cadena dinámica queda en minúsculas: aquí es dato, no sentencia.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
314
Tokens
39
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 39 segundos.

Escribe este fragmento

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

← Anterior Siguiente →