liquibase.executor.jvm.SqlParameter Maven / Gradle / Ivy
package liquibase.executor.jvm;
/**
* Object to represent a SQL parameter definition.
*
* Parameters may be anonymous, in which case "name" is null
.
* However, all parameters must define a SQL type according to {@link java.sql.Types}.
*
* @author Spring Framework
* @see java.sql.Types
*/
class SqlParameter {
/**
* The name of the parameter, if any
*/
private String name;
/**
* SQL type constant from java.sql.Types
*/
private final int sqlType;
/**
* Used for types that are user-named like: STRUCT, DISTINCT, JAVA_OBJECT, named array types
*/
private String typeName;
/**
* The scale to apply in case of a NUMERIC or DECIMAL type, if any
*/
private Integer scale;
/**
* Create a new anonymous SqlParameter, supplying the SQL type.
*
* @param sqlType SQL type of the parameter according to java.sql.Types
*/
public SqlParameter(int sqlType) {
this.sqlType = sqlType;
}
/**
* Create a new anonymous SqlParameter, supplying the SQL type.
*
* @param sqlType SQL type of the parameter according to java.sql.Types
* @param typeName the type name of the parameter (optional)
*/
public SqlParameter(int sqlType, String typeName) {
this.sqlType = sqlType;
this.typeName = typeName;
}
/**
* Create a new anonymous SqlParameter, supplying the SQL type.
*
* @param sqlType SQL type of the parameter according to java.sql.Types
* @param scale the number of digits after the decimal point
* (for DECIMAL and NUMERIC types)
*/
public SqlParameter(int sqlType, int scale) {
this.sqlType = sqlType;
this.scale = scale;
}
/**
* Create a new SqlParameter, supplying name and SQL type.
*
* @param name name of the parameter, as used in input and output maps
* @param sqlType SQL type of the parameter according to java.sql.Types
*/
public SqlParameter(String name, int sqlType) {
this.name = name;
this.sqlType = sqlType;
}
/**
* Create a new SqlParameter, supplying name and SQL type.
*
* @param name name of the parameter, as used in input and output maps
* @param sqlType SQL type of the parameter according to java.sql.Types
* @param typeName the type name of the parameter (optional)
*/
public SqlParameter(String name, int sqlType, String typeName) {
this.name = name;
this.sqlType = sqlType;
this.typeName = typeName;
}
/**
* Create a new SqlParameter, supplying name and SQL type.
*
* @param name name of the parameter, as used in input and output maps
* @param sqlType SQL type of the parameter according to java.sql.Types
* @param scale the number of digits after the decimal point
* (for DECIMAL and NUMERIC types)
*/
public SqlParameter(String name, int sqlType, int scale) {
this.name = name;
this.sqlType = sqlType;
this.scale = scale;
}
/**
* Copy constructor.
*
* @param otherParam the SqlParameter object to copy from
*/
public SqlParameter(SqlParameter otherParam) {
this.name = otherParam.name;
this.sqlType = otherParam.sqlType;
this.typeName = otherParam.typeName;
this.scale = otherParam.scale;
}
/**
* Return the name of the parameter.
*/
public String getName() {
return this.name;
}
/**
* Return the SQL type of the parameter.
*/
public int getSqlType() {
return this.sqlType;
}
/**
* Return the type name of the parameter, if any.
*/
public String getTypeName() {
return this.typeName;
}
/**
* Return the scale of the parameter, if any.
*/
public Integer getScale() {
return this.scale;
}
/**
* Return whether this parameter holds input values that should be set
* before execution even if they are null
.
*
This implementation always returns true
.
*/
public boolean isInputValueProvided() {
return true;
}
/**
* Return whether this parameter is an implicit return parameter used during the
* reults preocessing of the CallableStatement.getMoreResults/getUpdateCount.
*
This implementation always returns false
.
*/
public boolean isResultsParameter() {
return false;
}
}