AdvancedAdvanced PostgreSQL
Dynamic SQL with EXECUTE
The query
SQL
DO $$
DECLARE
v_table_name TEXT := 'employees';
v_column TEXT := 'salary';
v_result NUMERIC;
v_sql TEXT;
BEGIN
v_sql := FORMAT('SELECT AVG(%I) FROM %I WHERE status = $1', v_column, v_table_name);
EXECUTE v_sql INTO v_result USING 'active';
RAISE NOTICE 'Average % in % for active: %', v_column, v_table_name, v_result;
END;
$$;Note
“Dynamic SQL with EXECUTE. Use %I for identifiers (prevents SQL injection). $1 with USING for safe value binding.