void convertToParameters(List<Expression> values, StoredProcedure storedProcedure, int paramIndex) { for (Expression value : values) { SPParameter parameter = new SPParameter(paramIndex++, value); parameter.setParameterType(SPParameter.IN); storedProcedure.setParameter(parameter); } }
void convertToParameters(List<Expression> values, StoredProcedure storedProcedure, int paramIndex) { for (Expression value : values) { SPParameter parameter = new SPParameter(paramIndex++, value); parameter.setParameterType(SPParameter.IN); storedProcedure.setParameter(parameter); } }
void convertToParameters(List<Expression> values, StoredProcedure storedProcedure, int paramIndex) { for (Expression value : values) { SPParameter parameter = new SPParameter(paramIndex++, value); parameter.setParameterType(SPParameter.IN); storedProcedure.setParameter(parameter); } }
@Test public void testExecInputOutputParam() { StoredProcedure proc = new StoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param1 = new SPParameter(1, new Constant(new Integer(5))); param1.setParameterType(ParameterInfo.IN); proc.setParameter(param1); SPParameter param2 = new SPParameter(2, ParameterInfo.OUT, "x"); //$NON-NLS-1$ proc.setParameter(param2); helpTest(proc, "EXEC myproc(5)"); //$NON-NLS-1$ }
@Test public void testExecOutputInputParam() { StoredProcedure proc = new StoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param2 = new SPParameter(2, ParameterInfo.OUT, "x"); //$NON-NLS-1$ proc.setParameter(param2); SPParameter param1 = new SPParameter(1, new Constant(new Integer(5))); param1.setParameterType(ParameterInfo.IN); proc.setParameter(param1); helpTest(proc, "EXEC myproc(5)"); //$NON-NLS-1$ }
@Test public void testExecReturnParam() { StoredProcedure proc = new StoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, ParameterInfo.RETURN_VALUE, "ret"); //$NON-NLS-1$ proc.setParameter(param); helpTest(proc, "EXEC myproc()"); //$NON-NLS-1$ }
@Test public void testExecNamedParams() { StoredProcedure proc = new StoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, new Reference(0)); param.setName("p1");//$NON-NLS-1$ proc.setParameter(param); SPParameter param2 = new SPParameter(2, new Reference(0)); param2.setName("p2");//$NON-NLS-1$ proc.setParameter(param2); helpTest(proc, "EXEC myproc(p1 => ?, p2 => ?)"); //$NON-NLS-1$ }
@Test public void testExecInputParam() { StoredProcedure proc = new StoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, new Reference(0)); proc.setParameter(param); helpTest(proc, "EXEC myproc(?)"); //$NON-NLS-1$ }
@Test public void testStoredQuery(){ StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter parameter = new SPParameter(1, new Constant("param1")); //$NON-NLS-1$ parameter.setParameterType(ParameterInfo.IN); storedQuery.setParameter(parameter); helpTest("Exec proc1('param1')", "EXEC proc1('param1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ helpTest("execute proc1('param1')", "EXEC proc1('param1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testVariablesInExec(){ StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter parameter = new SPParameter(1, new ElementSymbol("param1")); //$NON-NLS-1$ parameter.setParameterType(ParameterInfo.IN); storedQuery.setParameter(parameter); helpTest("Exec proc1(param1)", "EXEC proc1(param1)", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ helpTest("execute proc1(param1)", "EXEC proc1(param1)", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testCacheHintCallableStatement() { String sql = "/*+ cache */ { ? = call proc() }"; //$NON-NLS-1$ StoredProcedure sp = new StoredProcedure(); SPParameter param = new SPParameter(1, null); param.setParameterType(SPParameter.RETURN_VALUE); sp.setParameter(param); sp.setProcedureName("proc"); sp.setCallableStatement(true); CacheHint hint = new CacheHint(); sp.setCacheHint(hint); TestParser.helpTest(sql, "/*+ cache */ ? = EXEC proc()", sp); //$NON-NLS-1$ }
@Test public void testExecNamedParam() { StoredProcedure proc = new StoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, new Reference(0)); param.setName("p1");//$NON-NLS-1$ proc.setParameter(param); helpTest(proc, "EXEC myproc(p1 => ?)"); //$NON-NLS-1$ }
@Test public void testCase3281NamedVariables() { StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setDisplayNamedParameters(true); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter param1 = new SPParameter(1, new Constant("paramValue1")); //$NON-NLS-1$ param1.setName("param1"); //$NON-NLS-1$ param1.setParameterType(ParameterInfo.IN); storedQuery.setParameter(param1); SPParameter param2 = new SPParameter(2, new Constant("paramValue2")); //$NON-NLS-1$ param2.setName("param2"); //$NON-NLS-1$ param2.setParameterType(ParameterInfo.IN); storedQuery.setParameter(param2); helpTest("Exec proc1(param1 = 'paramValue1', param2 = 'paramValue2')", "EXEC proc1(param1 => 'paramValue1', param2 => 'paramValue2')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ helpTest("execute proc1(param1 = 'paramValue1', param2 = 'paramValue2')", "EXEC proc1(param1 => 'paramValue1', param2 => 'paramValue2')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
/** Test what happens if the name of a parameter is a reserved word. It must be quoted (double-ticks). */ @Test public void testCase3281NamedVariablesReservedWords() { StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setDisplayNamedParameters(true); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter param1 = new SPParameter(1, new Constant("paramValue1")); //$NON-NLS-1$ param1.setName("in"); //$NON-NLS-1$ //<---RESERVED WORD param1.setParameterType(ParameterInfo.IN); storedQuery.setParameter(param1); SPParameter param2 = new SPParameter(2, new Constant("paramValue2")); //$NON-NLS-1$ param2.setName("in2"); //$NON-NLS-1$ param2.setParameterType(ParameterInfo.IN); storedQuery.setParameter(param2); helpTest("Exec proc1(\"in\" = 'paramValue1', in2 = 'paramValue2')", "EXEC proc1(\"in\" => 'paramValue1', in2 => 'paramValue2')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ helpTest("execute proc1(\"in\" = 'paramValue1', in2 = 'paramValue2')", "EXEC proc1(\"in\" => 'paramValue1', in2 => 'paramValue2')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testCase3281NamedVariable() { StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setDisplayNamedParameters(true); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter parameter = new SPParameter(1, new Constant("paramValue1")); //$NON-NLS-1$ parameter.setName("param1"); //$NON-NLS-1$ parameter.setParameterType(ParameterInfo.IN); storedQuery.setParameter(parameter); helpTest("Exec proc1(param1 = 'paramValue1')", "EXEC proc1(param1 => 'paramValue1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ helpTest("execute proc1(param1 = 'paramValue1')", "EXEC proc1(param1 => 'paramValue1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
public void testExecParamElement() { StoredProcedure exec = new StoredProcedure(); exec.setProcedureName("pm1.proc1"); //$NON-NLS-1$ exec.setProcedureID("proc"); //$NON-NLS-1$ SPParameter param1 = new SPParameter(1, exampleElement(true, 1)); exec.setParameter(param1); // Run symbol mapper StaticSymbolMappingVisitor visitor = new StaticSymbolMappingVisitor(getSymbolMap()); DeepPreOrderNavigator.doVisit(exec, visitor); // Check that element got switched assertEquals("Stored proc param did not get mapped correctly: ", exampleElement(false, 1), param1.getExpression()); //$NON-NLS-1$ }
@Test public void testStoredQuery2SanityCheck(){ StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter parameter = new SPParameter(1, new Constant("param1")); //$NON-NLS-1$ storedQuery.setParameter(parameter); From from = new From(); SubqueryFromClause sfc = new SubqueryFromClause("x", storedQuery); //$NON-NLS-1$ from.addClause(sfc); Select select = new Select(); select.addSymbol(new ElementSymbol("x.a")); //$NON-NLS-1$ helpTest("exec proc1('param1')", "EXEC proc1('param1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testCase3281QuotedNamedVariableFails2() { StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter param1 = new SPParameter(1, new CompareCriteria(new Constant("a"), CompareCriteria.EQ, new Constant("b"))); //$NON-NLS-1$ param1.setParameterType(ParameterInfo.IN); storedQuery.setParameter(param1); helpTest("Exec proc1('a' = 'b')", "EXEC proc1(('a' = 'b'))", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
public void testExecParamFunction() { StoredProcedure exec = new StoredProcedure(); exec.setProcedureName("pm1.proc1"); //$NON-NLS-1$ exec.setProcedureID("proc"); //$NON-NLS-1$ Function f = new Function("length", new Expression[] { exampleElement(true, 1) }); //$NON-NLS-1$ SPParameter param1 = new SPParameter(1, f); exec.setParameter(param1); // Run symbol mapper StaticSymbolMappingVisitor visitor = new StaticSymbolMappingVisitor(getSymbolMap()); DeepPreOrderNavigator.doVisit(exec, visitor); // Check that element got switched Function afterFunc = (Function) param1.getExpression(); assertEquals("Stored proc param did not get mapped correctly: ", exampleElement(false, 1), afterFunc.getArg(0)); //$NON-NLS-1$ }
@Test public void testStoredQuery2(){ StoredProcedure storedQuery = new StoredProcedure(); storedQuery.setProcedureName("proc1"); //$NON-NLS-1$ SPParameter parameter = new SPParameter(1, new Constant("param1")); //$NON-NLS-1$ storedQuery.setParameter(parameter); From from = new From(); SubqueryFromClause sfc = new SubqueryFromClause("x", storedQuery); //$NON-NLS-1$ from.addClause(sfc); Select select = new Select(); select.addSymbol(new ElementSymbol("X.A")); //$NON-NLS-1$ Query query = new Query(); query.setSelect(select); query.setFrom(from); helpTest("SELECT X.A FROM (exec proc1('param1')) AS X", "SELECT X.A FROM (EXEC proc1('param1')) AS X", query); //$NON-NLS-1$ //$NON-NLS-2$ }