下面列出了java.sql.ParameterMetaData#parameterModeOut ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* give the stored procedure's column type name from the type.
* @param type
* @return
*/
public static String toModeType( int type )
{
switch ( type )
{
case ParameterMetaData.parameterModeUnknown:
return "Unknown";
case ParameterMetaData.parameterModeIn:
return "Input";
case ParameterMetaData.parameterModeInOut:
return "Input/Output";
case ParameterMetaData.parameterModeOut:
return "Output";
case 5:
return "Return Value";
default:
return "Unknown";
}
}
/**
* print the parameter mode in human readable form
*
* @param mode identifies parameter's mode (IN, OUT, or IN_OUT)
* @return the parameter mode in readable form
*
*/
static String parameterModeInStringForm(int mode){
if (mode == ParameterMetaData.parameterModeIn)
return("PARAMETER_MODE_IN");
else if (mode == ParameterMetaData.parameterModeInOut )
return("PARAMETER_MODE_IN_OUT");
else if (mode == ParameterMetaData.parameterModeOut)
return("PARAMETER_MODE_OUT");
else if (mode == ParameterMetaData.parameterModeUnknown)
return("PARAMETER_MODE_UNKNOWN");
else
return("ERROR: donot recognize this parameter mode");
}
/**
* print the parameter mode in human readable form
*
* @param mode identifies parameter's mode (IN, OUT, or IN_OUT)
* @return the parameter mode in readable form
*
*/
static String parameterModeInStringForm(int mode){
if (mode == ParameterMetaData.parameterModeIn)
return("PARAMETER_MODE_IN");
else if (mode == ParameterMetaData.parameterModeInOut )
return("PARAMETER_MODE_IN_OUT");
else if (mode == ParameterMetaData.parameterModeOut)
return("PARAMETER_MODE_OUT");
else if (mode == ParameterMetaData.parameterModeUnknown)
return("PARAMETER_MODE_UNKNOWN");
else
return("ERROR: donot recognize this parameter mode");
}
/**
* Decodes a parameter mode number into a readable string
* @param mode The mode
* @return The string
*/
public static String getParameterMode(int mode) {
switch (mode) {
case ParameterMetaData.parameterModeIn: return "IN";
case ParameterMetaData.parameterModeInOut: return "INOUT";
case ParameterMetaData.parameterModeOut: return "OUT";
case ParameterMetaData.parameterModeUnknown: return "UNKNOWN";
default:
return "UNRECOGNIZED";
}
}
/**
* print the parameter mode in human readable form
*
* @param mode identifies parameter's mode (IN, OUT, or IN_OUT)
* @return the parameter mode in readable form
*
*/
static String parameterModeInStringForm(int mode){
if (mode == ParameterMetaData.parameterModeIn)
return("PARAMETER_MODE_IN");
else if (mode == ParameterMetaData.parameterModeInOut )
return("PARAMETER_MODE_IN_OUT");
else if (mode == ParameterMetaData.parameterModeOut)
return("PARAMETER_MODE_OUT");
else if (mode == ParameterMetaData.parameterModeUnknown)
return("PARAMETER_MODE_UNKNOWN");
else
return("ERROR: donot recognize this parameter mode");
}
private void addParametersFromDBMD(java.sql.ResultSet paramTypesRs) throws SQLException {
int i = 0;
while (paramTypesRs.next()) {
String paramName = paramTypesRs.getString(4);
int inOutModifier;
switch (paramTypesRs.getInt(5)) {
case DatabaseMetaData.procedureColumnIn:
inOutModifier = ParameterMetaData.parameterModeIn;
break;
case DatabaseMetaData.procedureColumnInOut:
inOutModifier = ParameterMetaData.parameterModeInOut;
break;
case DatabaseMetaData.procedureColumnOut:
case DatabaseMetaData.procedureColumnReturn:
inOutModifier = ParameterMetaData.parameterModeOut;
break;
default:
inOutModifier = ParameterMetaData.parameterModeUnknown;
}
boolean isOutParameter = false;
boolean isInParameter = false;
if (i == 0 && this.isFunctionCall) {
isOutParameter = true;
isInParameter = false;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnInOut) {
isOutParameter = true;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnIn) {
isOutParameter = false;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnOut) {
isOutParameter = true;
isInParameter = false;
}
int jdbcType = paramTypesRs.getInt(6);
String typeName = paramTypesRs.getString(7);
int precision = paramTypesRs.getInt(8);
int scale = paramTypesRs.getInt(10);
short nullability = paramTypesRs.getShort(12);
CallableStatementParam paramInfoToAdd = new CallableStatementParam(paramName, i++, isInParameter, isOutParameter, jdbcType, typeName, precision,
scale, nullability, inOutModifier);
this.parameterList.add(paramInfoToAdd);
this.parameterMap.put(paramName, paramInfoToAdd);
}
}
private void addParametersFromDBMD(java.sql.ResultSet paramTypesRs) throws SQLException {
int i = 0;
while (paramTypesRs.next()) {
String paramName = paramTypesRs.getString(4);
int inOutModifier;
switch (paramTypesRs.getInt(5)) {
case DatabaseMetaData.procedureColumnIn:
inOutModifier = ParameterMetaData.parameterModeIn;
break;
case DatabaseMetaData.procedureColumnInOut:
inOutModifier = ParameterMetaData.parameterModeInOut;
break;
case DatabaseMetaData.procedureColumnOut:
case DatabaseMetaData.procedureColumnReturn:
inOutModifier = ParameterMetaData.parameterModeOut;
break;
default:
inOutModifier = ParameterMetaData.parameterModeUnknown;
}
boolean isOutParameter = false;
boolean isInParameter = false;
if (i == 0 && this.isFunctionCall) {
isOutParameter = true;
isInParameter = false;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnInOut) {
isOutParameter = true;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnIn) {
isOutParameter = false;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnOut) {
isOutParameter = true;
isInParameter = false;
}
int jdbcType = paramTypesRs.getInt(6);
String typeName = paramTypesRs.getString(7);
int precision = paramTypesRs.getInt(8);
int scale = paramTypesRs.getInt(10);
short nullability = paramTypesRs.getShort(12);
CallableStatementParam paramInfoToAdd = new CallableStatementParam(paramName, i++, isInParameter, isOutParameter, jdbcType, typeName, precision,
scale, nullability, inOutModifier);
this.parameterList.add(paramInfoToAdd);
this.parameterMap.put(paramName, paramInfoToAdd);
}
}
private void addParametersFromDBMD(java.sql.ResultSet paramTypesRs) throws SQLException {
int i = 0;
while (paramTypesRs.next()) {
String paramName = paramTypesRs.getString(4);
int inOutModifier;
switch (paramTypesRs.getInt(5)) {
case DatabaseMetaData.procedureColumnIn:
inOutModifier = ParameterMetaData.parameterModeIn;
break;
case DatabaseMetaData.procedureColumnInOut:
inOutModifier = ParameterMetaData.parameterModeInOut;
break;
case DatabaseMetaData.procedureColumnOut:
case DatabaseMetaData.procedureColumnReturn:
inOutModifier = ParameterMetaData.parameterModeOut;
break;
default:
inOutModifier = ParameterMetaData.parameterModeUnknown;
}
boolean isOutParameter = false;
boolean isInParameter = false;
if (i == 0 && this.isFunctionCall) {
isOutParameter = true;
isInParameter = false;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnInOut) {
isOutParameter = true;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnIn) {
isOutParameter = false;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnOut) {
isOutParameter = true;
isInParameter = false;
}
int jdbcType = paramTypesRs.getInt(6);
String typeName = paramTypesRs.getString(7);
int precision = paramTypesRs.getInt(8);
int scale = paramTypesRs.getInt(10);
short nullability = paramTypesRs.getShort(12);
CallableStatementParam paramInfoToAdd = new CallableStatementParam(paramName, i++, isInParameter, isOutParameter, jdbcType, typeName, precision,
scale, nullability, inOutModifier);
this.parameterList.add(paramInfoToAdd);
this.parameterMap.put(paramName, paramInfoToAdd);
}
}
private void addParametersFromDBMD(java.sql.ResultSet paramTypesRs) throws SQLException {
int i = 0;
while (paramTypesRs.next()) {
String paramName = paramTypesRs.getString(4);
int inOutModifier;
switch (paramTypesRs.getInt(5)) {
case DatabaseMetaData.procedureColumnIn:
inOutModifier = ParameterMetaData.parameterModeIn;
break;
case DatabaseMetaData.procedureColumnInOut:
inOutModifier = ParameterMetaData.parameterModeInOut;
break;
case DatabaseMetaData.procedureColumnOut:
case DatabaseMetaData.procedureColumnReturn:
inOutModifier = ParameterMetaData.parameterModeOut;
break;
default:
inOutModifier = ParameterMetaData.parameterModeUnknown;
}
boolean isOutParameter = false;
boolean isInParameter = false;
if (i == 0 && this.isFunctionCall) {
isOutParameter = true;
isInParameter = false;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnInOut) {
isOutParameter = true;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnIn) {
isOutParameter = false;
isInParameter = true;
} else if (inOutModifier == java.sql.DatabaseMetaData.procedureColumnOut) {
isOutParameter = true;
isInParameter = false;
}
int jdbcType = paramTypesRs.getInt(6);
String typeName = paramTypesRs.getString(7);
int precision = paramTypesRs.getInt(8);
int scale = paramTypesRs.getInt(10);
short nullability = paramTypesRs.getShort(12);
CallableStatementParam paramInfoToAdd = new CallableStatementParam(paramName, i++, isInParameter, isOutParameter, jdbcType, typeName, precision,
scale, nullability, inOutModifier);
this.parameterList.add(paramInfoToAdd);
this.parameterMap.put(paramName, paramInfoToAdd);
}
}
protected void callDefaultProcedure(PrintWriter writer, HttpServletRequest request, String jsonpArgName,
JDBCCallableStatement call, Map<String,List<String>> queryParams, String jsonParams) throws SQLException {
if (queryParams != null) {
for (Map.Entry<String,List<String>> entry : queryParams.entrySet()) {
if (jsonpArgName.equals(entry.getKey()))
continue;
if (entry.getValue().size() != 1)
throw new WrongExpressionArityException(1, entry.getValue().size());
call.setString(entry.getKey(), entry.getValue().get(0));
}
}
if (jsonParams != null) {
JsonNode parsed;
try {
parsed = jsonParser(jsonParams).readValueAsTree();
}
catch (IOException ex) {
throw new AkibanInternalException("Error reading from string", ex);
}
if (parsed.isObject()) {
Iterator<String> iter = parsed.fieldNames();
while (iter.hasNext()) {
String field = iter.next();
JsonNode value = parsed.get(field);
if (value.isBigDecimal()) {
call.setBigDecimal(field, value.decimalValue());
}
else if (value.isBoolean()) {
call.setBoolean(field, value.asBoolean());
}
else if (value.isDouble()) {
call.setDouble(field, value.asDouble());
}
else if (value.isInt()) {
call.setInt(field, value.asInt());
}
else if (value.isLong()) {
call.setLong(field, value.asLong());
}
else {
call.setString(field, value.textValue());
}
}
}
else {
throw new InvalidArgumentTypeException("JSON must be object or array");
}
}
boolean results = call.execute();
AkibanAppender appender = AkibanAppender.of(writer);
appender.append('{');
boolean first = true;
JDBCParameterMetaData md = (JDBCParameterMetaData)call.getParameterMetaData();
for (int i = 1; i <= md.getParameterCount(); i++) {
String name;
switch (md.getParameterMode(i)) {
case ParameterMetaData.parameterModeOut:
case ParameterMetaData.parameterModeInOut:
name = md.getParameterName(i);
if (name == null)
name = String.format("arg%d", i);
if (first)
first = false;
else
appender.append(',');
appender.append('"');
Quote.DOUBLE_QUOTE.append(appender, name);
appender.append("\":");
call.formatAsJson(i, appender, options);
break;
}
}
int nresults = 0;
while(results) {
beginResultSetArray(appender, first, nresults++);
first = false;
collectResults((JDBCResultSet) call.getResultSet(), appender, options);
endResultSetArray(appender);
results = call.getMoreResults();
}
appender.append('}');
}