}
}
else
{
String promoteName = null;
TypeDescriptorImpl returnType = (TypeDescriptorImpl) routineInfo.getReturnType();
String requiredType;
if (returnType == null)
{
// must have a void method for a procedure call.
requiredType = "void";
}
else
{
TypeId returnTypeId = TypeId.getBuiltInTypeId(returnType.getJDBCTypeId());
if (
returnType.isRowMultiSet() &&
( routineInfo.getParameterStyle() == RoutineAliasInfo.PS_DERBY_JDBC_RESULT_SET )
)
{
requiredType = ResultSet.class.getName();
}
else if ( returnType.getTypeId().userType() )
{
requiredType = ((UserDefinedTypeIdImpl) returnType.getTypeId()).getClassName();
}
else
{
requiredType = returnTypeId.getCorrespondingJavaTypeName();
if (!requiredType.equals(typeName)) {
switch (returnType.getJDBCTypeId()) {
case java.sql.Types.SMALLINT:
case java.sql.Types.INTEGER:
case java.sql.Types.BIGINT:
case java.sql.Types.REAL:
case java.sql.Types.DOUBLE: