public void visit(ProcedureMethod method) {
TypeClass[] paramTypes = method.getParamTypes();
int len = paramTypes.length;
listener.beginMethod(method.getName(), len);
SqlType returnType = (SqlType)method.getReturnType();
if (returnType != null) {
listener.handleMethodReturn(returnType.getName());
returnType.accept(this);
}
String[] paramNames = method.getParamNames();
int[] paramModes = method.getParamModes();
for (int idx = 0; idx < len; idx++ ) {
SqlType argType = (SqlType)paramTypes[idx];
int mode = paramModes[idx];
String modeStr = "IN";
if (mode == ProcedureMethod.OUT) {
modeStr = "OUT";
}
else if (mode == ProcedureMethod.INOUT) {
modeStr = "INOUT";
}
listener.beginMethodArg(paramNames[idx], modeStr, idx);
argType.accept(this);
listener.endMethodArg(paramNames[idx]);
}
listener.endMethod(method.getName());
}