package db import ( "context" "fmt" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" ) func ExecBatch(ctx context.Context, pool *pgxpool.Pool, stmt string, args [][]any) (int64, error) { batch := &pgx.Batch{} for _, a := range args { batch.Queue(stmt, a...) } results := pool.SendBatch(ctx, batch) defer results.Close() var rowsAffected int64 for i := 0; i < len(args); i++ { tag, err := results.Exec() if err != nil { return rowsAffected, fmt.Errorf("exec batch item %d: %w", i, err) } rowsAffected += tag.RowsAffected() } return rowsAffected, nil }