@Override public boolean isReturingParams() { if (userCommand instanceof StoredProcedure) { StoredProcedure sp = (StoredProcedure)userCommand; if (sp.isCallableStatement() && sp.returnsResultSet()) { for (SPParameter param : sp.getMapOfParameters().values()) { int type = param.getParameterType(); if (type == SPParameter.INOUT || type == SPParameter.OUT || type == SPParameter.RETURN_VALUE) { return true; } } } } return false; }
@Override public boolean isReturingParams() { if (userCommand instanceof StoredProcedure) { StoredProcedure sp = (StoredProcedure)userCommand; if (sp.isCallableStatement() && sp.returnsResultSet()) { for (SPParameter param : sp.getMapOfParameters().values()) { int type = param.getParameterType(); if (type == SPParameter.INOUT || type == SPParameter.OUT || type == SPParameter.RETURN_VALUE) { return true; } } } } return false; }
@Override public boolean isReturingParams() { if (userCommand instanceof StoredProcedure) { StoredProcedure sp = (StoredProcedure)userCommand; if (sp.isCallableStatement() && sp.returnsResultSet()) { for (SPParameter param : sp.getMapOfParameters().values()) { int type = param.getParameterType(); if (type == SPParameter.INOUT || type == SPParameter.OUT || type == SPParameter.RETURN_VALUE) { return true; } } } } return false; }
@Test public void testStoredQuery1() { StoredProcedure proc = (StoredProcedure) helpResolve("EXEC pm1.sq2('abc')"); //$NON-NLS-1$ // Check number of resolved parameters Map<Integer, SPParameter> params = proc.getMapOfParameters(); assertEquals("Did not get expected parameter count", 2, params.size()); //$NON-NLS-1$ // Check resolved parameters SPParameter param1 = params.get(2); helpCheckParameter(param1, ParameterInfo.RESULT_SET, 2, "pm1.sq2.ret", java.sql.ResultSet.class, null); //$NON-NLS-1$ SPParameter param2 = params.get(1); helpCheckParameter(param2, ParameterInfo.IN, 1, "pm1.sq2.in", DataTypeManager.DefaultDataClasses.STRING, new Constant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ }
if (command instanceof StoredProcedure) { StoredProcedure obj = (StoredProcedure)command; for (Iterator<SPParameter> params = obj.getMapOfParameters().values().iterator(); params.hasNext();) { SPParameter param = params.next(); if (param.getParameterType() != SPParameter.IN) {
if (command instanceof StoredProcedure) { StoredProcedure obj = (StoredProcedure)command; for (Iterator<SPParameter> params = obj.getMapOfParameters().values().iterator(); params.hasNext();) { SPParameter param = params.next(); if (param.getParameterType() != SPParameter.IN) {
if (command instanceof StoredProcedure) { StoredProcedure obj = (StoredProcedure)command; for (Iterator<SPParameter> params = obj.getMapOfParameters().values().iterator(); params.hasNext();) { SPParameter param = params.next(); if (param.getParameterType() != SPParameter.IN) {
/** * per defect 8211 - Input params do not have to be numbered sequentially in metadata. For example, * the first input param can be #1 and the second input param can be #3. (This occurs in * QueryBuilder's metadata where the return param happens to be created in between the two * input params and is numbered #2, but is not loaded into QueryBuilder's runtime env). * When the user's query is parsed and resolved, the placeholder * input params are numbered #1 and #2. This test tests that this disparity in ordering should not * be a problem as long as RELATIVE ordering is in synch. */ @Test public void testStoredQueryParamOrdering_8211() { StoredProcedure proc = (StoredProcedure) helpResolve("EXEC pm1.sq3a('abc', 123)"); //$NON-NLS-1$ // Check number of resolved parameters Map<Integer, SPParameter> params = proc.getMapOfParameters(); assertEquals("Did not get expected parameter count", 3, params.size()); //$NON-NLS-1$ // Check resolved parameters SPParameter param1 = params.get(1); helpCheckParameter(param1, ParameterInfo.IN, 1, "pm1.sq3a.in", DataTypeManager.DefaultDataClasses.STRING, new Constant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ SPParameter param2 = params.get(2); helpCheckParameter(param2, ParameterInfo.IN, 2, "pm1.sq3a.in2", DataTypeManager.DefaultDataClasses.INTEGER, new Constant(new Integer(123))); //$NON-NLS-1$ }