Module org.jooq
Package org.jooq.impl

Class AbstractRoutine<T>

java.lang.Object
org.jooq.impl.AbstractRoutine<T>
All Implemented Interfaces:
Serializable, Attachable, Named, Qualified, QueryPart, QueryPartInternal, Routine<T>

@Internal public abstract class AbstractRoutine<T> extends Object implements Routine<T>
A common base class for stored procedures

This type is for JOOQ INTERNAL USE only. Do not reference directly

Author:
Lukas Eder
See Also:
Serialized Form
  • Constructor Details

  • Method Details

    • setNumber

      protected final <N extends Number> void setNumber(Parameter<N> parameter, Number value)
    • setNumber

      protected final void setNumber(Parameter<? extends Number> parameter, Field<? extends Number> value)
    • setValue

      public final <Z> void setValue(Parameter<Z> parameter, Z value)
      Description copied from interface: Routine
      Set the routine's IN value for an IN parameter.
      Specified by:
      setValue in interface Routine<T>
    • set

      public final <Z> void set(Parameter<Z> parameter, Z value)
      Description copied from interface: Routine
      Set the routine's IN value for an IN parameter.
      Specified by:
      set in interface Routine<T>
    • setField

      protected final void setField(Parameter<?> parameter, Field<?> value)
    • attach

      public final void attach(Configuration c)
      Description copied from interface: Attachable
      Attach this object to a new Configuration.
      Specified by:
      attach in interface Attachable
      Parameters:
      c - A configuration or null, if you wish to detach this Attachable from its previous configuration.
    • detach

      public final void detach()
      Description copied from interface: Attachable
      Detach this object from its current Configuration.

      This is the same as calling attach(null).

      Specified by:
      detach in interface Attachable
    • configuration

      public final Configuration configuration()
      Description copied from interface: Attachable
      Get the currently attached Configuration, or null if no Configuration is attached.
      Specified by:
      configuration in interface Attachable
    • execute

      public final int execute(Configuration c)
      Description copied from interface: Routine
      Execute the stored object using a Configuration object
      Specified by:
      execute in interface Routine<T>
    • execute

      public final int execute()
      Description copied from interface: Routine
      Execute the stored object on an underlying connection
      Specified by:
      execute in interface Routine<T>
    • clauses

      public final Clause[] clauses(Context<?> ctx)
      Description copied from interface: QueryPartInternal
      The Clauses that are represented by this query part.

      QueryParts can specify several Clauses for which an event will be emitted before (in forward order) and after (in reverse order) visiting the the query part through Context.visit(QueryPart)

      This method is for JOOQ INTERNAL USE only. Do not reference directly

      Specified by:
      clauses in interface QueryPartInternal
      Returns:
      The Clauses represented by this query part or null or an empty array if this query part does not represent a clause.
    • accept

      public final void accept(Context<?> ctx)
      Description copied from interface: QueryPartInternal
      This QueryPart can accept a Context object in order to render a SQL string or to bind its variables.
      Specified by:
      accept in interface QueryPartInternal
    • getReturnValue

      public final T getReturnValue()
      Specified by:
      getReturnValue in interface Routine<T>
      Returns:
      The routine's return value (if it is a function)
    • getResults

      public final Results getResults()
      Specified by:
      getResults in interface Routine<T>
      Returns:
      The routine's results (if available)
    • getValue

      public final <Z> Z getValue(Parameter<Z> parameter)
      Specified by:
      getValue in interface Routine<T>
      Returns:
      The routine's OUT value for an OUT parameter.
    • get

      public final <Z> Z get(Parameter<Z> parameter)
      Specified by:
      get in interface Routine<T>
      Returns:
      The routine's OUT value for an OUT parameter.
    • getInValue

      public final <Z> Z getInValue(Parameter<Z> parameter)
      Specified by:
      getInValue in interface Routine<T>
      Returns:
      The routine's IN value for an IN parameter.
    • getInValues

      protected final Map<Parameter<?>,​Field<?>> getInValues()
    • getOutParameters

      public final List<Parameter<?>> getOutParameters()
      Description copied from interface: Routine
      A list of OUT parameters passed to the stored procedure as argument. This list contains all parameters that are either OUT or INOUT in their respective order of appearance in Routine.getParameters().
      Specified by:
      getOutParameters in interface Routine<T>
      Returns:
      The list of out parameters
      See Also:
      Routine.getParameters()
    • getInParameters

      public final List<Parameter<?>> getInParameters()
      Description copied from interface: Routine
      A list of IN parameters passed to the stored procedure as argument. This list contains all parameters that are either IN or INOUT in their respective order of appearance in Routine.getParameters().
      Specified by:
      getInParameters in interface Routine<T>
      Returns:
      The list of in parameters
      See Also:
      Routine.getParameters()
    • getParameters

      public final List<Parameter<?>> getParameters()
      Specified by:
      getParameters in interface Routine<T>
      Returns:
      A list of parameters passed to the stored object as argument
    • getCatalog

      public final Catalog getCatalog()
      Description copied from interface: Qualified
      Get the object's catalog.
      Specified by:
      getCatalog in interface Qualified
    • getSchema

      public final Schema getSchema()
      Description copied from interface: Qualified
      Get the object's schema.
      Specified by:
      getSchema in interface Qualified
    • getPackage

      @Pro public final Package getPackage()
      Description copied from interface: Routine
      The container package of this stored procedure or function.

      This is only supported in the SQLDialect.ORACLE dialect.

      Specified by:
      getPackage in interface Routine<T>
      Returns:
      The container package of this object, or null if there is no such container.
    • getReturnParameter

      public final Parameter<T> getReturnParameter()
      Description copied from interface: Routine
      The parameter representing this routine's Routine.getReturnValue()
      Specified by:
      getReturnParameter in interface Routine<T>
      Returns:
      The return parameter or null if this routine doesn't have a return value.
      See Also:
      Routine.getParameters()
    • setOverloaded

      protected final void setOverloaded(boolean overloaded)
    • isOverloaded

      protected final boolean isOverloaded()
    • setPipelined

      @Pro protected final void setPipelined(boolean pipelined)
    • isPipelined

      @Pro protected final boolean isPipelined()
    • addInParameter

      protected final void addInParameter(Parameter<?> parameter)
    • addInOutParameter

      protected final void addInOutParameter(Parameter<?> parameter)
    • addOutParameter

      protected final void addOutParameter(Parameter<?> parameter)
    • setReturnParameter

      protected final void setReturnParameter(Parameter<T> parameter)
    • setSyntheticReturnParameter

      @Pro protected final void setSyntheticReturnParameter(Parameter<T> parameter)
    • setPLSQLBooleanParameter

      @Pro protected final void setPLSQLBooleanParameter(Parameter<?> parameter)
    • asField

      public final Field<T> asField()
    • asField

      public final Field<T> asField(String alias)
    • asAggregateFunction

      public final AggregateFunction<T> asAggregateFunction()
    • createParameter

      @Deprecated protected static final <T> Parameter<T> createParameter(String name, DataType<T> type)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createParameter

      @Deprecated protected static final <T> Parameter<T> createParameter(String name, DataType<T> type, boolean isDefaulted)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
    • createParameter

      @Deprecated protected static final <T,​ U> Parameter<U> createParameter(String name, DataType<T> type, boolean isDefaulted, Converter<T,​U> converter)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
    • createParameter

      @Deprecated protected static final <T,​ U> Parameter<U> createParameter(String name, DataType<T> type, boolean isDefaulted, Binding<T,​U> binding)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
    • createParameter

      @Deprecated protected static final <T,​ X,​ U> Parameter<U> createParameter(String name, DataType<T> type, boolean isDefaulted, Converter<X,​U> converter, Binding<T,​X> binding)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
    • createParameter

      @Deprecated protected static final <T> Parameter<T> createParameter(String name, DataType<T> type, boolean isDefaulted, boolean isUnnamed)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
      isUnnamed - Whether the parameter is unnamed (see Parameter.isUnnamed().
    • createParameter

      @Deprecated protected static final <T,​ U> Parameter<U> createParameter(String name, DataType<T> type, boolean isDefaulted, boolean isUnnamed, Converter<T,​U> converter)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
      isUnnamed - Whether the parameter is unnamed (see Parameter.isUnnamed().
    • createParameter

      @Deprecated protected static final <T,​ U> Parameter<U> createParameter(String name, DataType<T> type, boolean isDefaulted, boolean isUnnamed, Binding<T,​U> binding)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
      isUnnamed - Whether the parameter is unnamed (see Parameter.isUnnamed().
    • createParameter

      @Deprecated protected static final <T,​ X,​ U> Parameter<U> createParameter(String name, DataType<T> type, boolean isDefaulted, boolean isUnnamed, Converter<X,​U> converter, Binding<T,​X> binding)
      Deprecated.
      - Please, re-generate your routine code.
      Subclasses may call this method to create UDTField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
      isDefaulted - Whether the parameter is defaulted (see Parameter.isDefaulted()
      isUnnamed - Whether the parameter is unnamed (see Parameter.isUnnamed().
    • $schema

      public final Schema $schema()
      Specified by:
      $schema in interface Qualified
    • $traverse

      default <R> R $traverse(Traverser<?,​R> traverser)
      Description copied from interface: QueryPart
      Traverser this QueryPart expression tree using a composable Traverser, producing a result.

      This offers a generic way to traverse expression trees to translate the tree to arbitrary other data structures. The simplest traversal would just count all the tree elements:

       int count = CUSTOMER.NAME.eq(1).$traverse(0, (i, p) -> i + 1);
       

      The same can be achieved by translating the JDK Collector API to the Traverser API using Traversers.collecting(Collector).

       CUSTOMER.NAME.eq(1).$traverse(Traversers.collecting(Collectors.counting()));
       

      Unlike a Collector, a Traverser is optimised for tree traversal, not stream traversal:

      • Is not designed for parallelism
      • It can Traverser.abort() traversal early when the result can be produced early (e.g. when running Traversers.containing(QueryPart), and a result has been found).
      • It can decide whether to Traverser.recurse() into a QueryPart subtree, or whether that is not necessary or even undesirable, e.g. to prevent entering new subquery scopes.
      • Unlike a Collector, which can use its Collector.accumulator() to accumulate each element only once, in tree traversal, it's desirable to be able to distinguish between accumulating an item Traverser.before() or Traverser.after() recursing into it. This is useful e.g. to wrap each tree node in XML opening and closing tags.
      Specified by:
      $traverse in interface QueryPart
    • $replace

      default QueryPart $replace(Predicate<? super QueryPart> recurse, Function1<? super QueryPart,​? extends QueryPart> replacement)
      Description copied from interface: QueryPart
      Traverse a QueryPart hierarchy and recursively replace its elements by alternatives.
      Specified by:
      $replace in interface QueryPart
      Parameters:
      recurse - A predicate to decide whether to recurse into a QueryPart subtree.
      replacement - The replacement function. Replacement continues recursively until the function returns null or its input for any given input.
    • getName

      public final String getName()
      Description copied from interface: Named
      The unqualified name of this object.
      Specified by:
      getName in interface Named
    • getQualifiedName

      public Name getQualifiedName()
      Description copied from interface: Named
      The qualified name of this object.
      Specified by:
      getQualifiedName in interface Named
    • getUnqualifiedName

      public final Name getUnqualifiedName()
      Description copied from interface: Named
      The unqualified name of this object.
      Specified by:
      getUnqualifiedName in interface Named
    • getComment

      public final String getComment()
      Description copied from interface: Named
      The comment on this object.

      This is the same as calling Named.getCommentPart() and then Comment.getComment().

      Specified by:
      getComment in interface Named
    • getCommentPart

      public final Comment getCommentPart()
      Description copied from interface: Named
      The comment on this object as a QueryPart.
      Specified by:
      getCommentPart in interface Named
    • hashCode

      public int hashCode()
      Description copied from interface: QueryPart
      Generate a hash code from this QueryPart.

      In general, QueryPart hash codes are the same as the hash codes generated from QueryPart.toString(). This guarantees consistent behaviour with QueryPart.equals(Object)

      Some QueryPart implementations may choose to override this behaviour for improved performance, as QueryPart.toString() is an expensive operation, if called many times.

      Specified by:
      hashCode in interface QueryPart
      Returns:
      The QueryPart hash code
    • equals

      public boolean equals(Object that)
      Description copied from interface: QueryPart
      Check whether this QueryPart can be considered equal to another QueryPart.

      In general, QueryPart equality is defined in terms of QueryPart.toString() equality. In other words, two query parts are considered equal if their rendered SQL (with inlined bind variables) is equal. This means that the two query parts do not necessarily have to be of the same type.

      Some QueryPart implementations may choose to override this behaviour for improved performance, as QueryPart.toString() is an expensive operation, if called many times.

      Specified by:
      equals in interface QueryPart
      Parameters:
      that - The other QueryPart
      Returns:
      Whether the two query parts are equal
    • $name

      public final Name $name()
      Specified by:
      $name in interface Named
    • rendersContent

      public boolean rendersContent(Context<?> ctx)
      Subclasses may override this
      Specified by:
      rendersContent in interface QueryPartInternal
    • declaresFields

      public boolean declaresFields()
      Subclasses may override this
      Specified by:
      declaresFields in interface QueryPartInternal
    • declaresTables

      public boolean declaresTables()
      Subclasses may override this
      Specified by:
      declaresTables in interface QueryPartInternal
    • declaresWindows

      public boolean declaresWindows()
      Subclasses may override this
      Specified by:
      declaresWindows in interface QueryPartInternal
    • declaresCTE

      public boolean declaresCTE()
      Subclasses may override this
      Specified by:
      declaresCTE in interface QueryPartInternal
    • declaresParameters

      @Pro public boolean declaresParameters()
      Subclasses may override this
      Specified by:
      declaresParameters in interface QueryPartInternal
    • generatesCast

      public boolean generatesCast()
      Subclasses may override this
      Specified by:
      generatesCast in interface QueryPartInternal
    • toString

      public String toString()
      Description copied from interface: QueryPart
      Render a SQL string representation of this QueryPart.

      For improved debugging, this renders a SQL string of this QueryPart with inlined bind variables. If this QueryPart is Attachable, then the attached Configuration may be used for rendering the SQL string, including SQLDialect and Settings. Do note that most QueryPart instances are not attached to a Configuration, and thus there is no guarantee that the SQL string will make sense in the context of a specific database.

      Specified by:
      toString in interface QueryPart
      Overrides:
      toString in class Object
      Returns:
      A SQL string representation of this QueryPart
    • create

      @Deprecated protected final DSLContext create()
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • create

      @Deprecated protected final DSLContext create(Configuration configuration)
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • create

      @Deprecated protected final DSLContext create(Context<?> ctx)
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • translate

      protected final DataAccessException translate(String sql, SQLException e)
      Internal convenience method