Module org.jooq
Package org.jooq

Interface Block

  • All Superinterfaces:
    Attachable, AutoCloseable, Flow.Publisher<Integer>, org.reactivestreams.Publisher<Integer>, Query, QueryPart, RowCountQuery, Serializable, Statement

    public interface Block
    extends RowCountQuery
    A procedural block.

    Many RDBMS support procedural languages and in those languages, blocks are an essential means of grouping logic and creating scope. Some databases support executing anonymous blocks, in case of which the jOOQ Block can be executed like any other Query. This works in a similar way as a Batch containing multiple queries, but unlike a Batch, a Block can contain procedural code as well.

    Example:

     // Assuming import static org.jooq.impl.DSL.*;
    
     // Wrapping SQL statements only
     using(configuration)
        .begin(
            insertInto(TABLE1).columns(TABLE1.COL).values(1),
            insertInto(TABLE2).columns(TABLE2.COL).values(2),
            insertInto(TABLE3).columns(TABLE3.COL).values(3)
        )
        .execute();
    
     // Wrapping procedural code
     Variable<Integer> i = var("i", SQLDataType.INTEGER);
     using(configuration)
        .begin(
            for_(i).in(1, 3).loop(
                insertInto(TABLE1).columns(TABLE1.COL).values(i)
            )
        )
        .execute();
     

    Instances can be created using DSL.begin(Statement...) and overloads.

    Author:
    Lukas Eder