Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
Parameter types
Supported by ✅ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
Bind values or bind parameters come in different flavours in different SQL databases. JDBC standardises on their syntax by allowing only ? (question mark) characters as placeholders for bind variables. Thus, jOOQ, by default, generates ? placeholders for JDBC consumptions. Users who wish to use jOOQ with a different backend than JDBC can specify that all jOOQ bind values, including indexed parameters and named parameters generate alternative strings, other than ?.
These are the current options:
-
INDEXED(the default): Generates indexed parameter placeholders using?. -
NAMED: Generates named parameter placeholders, such as:paramfor parameters that are named explicitly or:1for unnamed, indexed parameters. -
NAMED_OR_INLINED:Generates named parameter placeholders for parameters that are named explicitly and inlines all unnamed parameters. -
INLINED: Inlines all parameters.
An example:
-- INDEXED SELECT FIRST_NAME || ? FROM AUTHOR WHERE ID = ? -- NAMED SELECT FIRST_NAME || :1 FROM AUTHOR WHERE ID = :x -- NAMED_OR_INLINED SELECT FIRST_NAME || 'x' FROM AUTHOR WHERE ID = :x -- INLINED SELECT FIRST_NAME || 'x' FROM AUTHOR WHERE ID = 42
Param<String> x = val("x");
Param<Integer> i = param("x", 42);
DSL.using(configuration)
.select(FIRST_NAME.concat(x))
.from(AUTHOR)
.where(ID.eq(i))
.fetch();
Example configuration
Settings settings = new Settings()
.withParamType(ParamType.NAMED); // Defaults to INDEXED
The following setting statementType may override this setting.
Feedback
Do you have any feedback about this page? We'd love to hear it!