@Test public void testAddInvoiceFuncWithoutMetaDataUsingArrayParams() throws Exception { initializeAddInvoiceWithoutMetaData(true); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withFunctionName("add_invoice"); adder.declareParameters( new SqlOutParameter("return", Types.INTEGER), new SqlParameter("amount", Types.INTEGER), new SqlParameter("custid", Types.INTEGER)); Number newId = adder.executeFunction(Number.class, 1103, 3); assertEquals(4, newId.intValue()); verifyAddInvoiceWithoutMetaData(true); verify(connection, atLeastOnce()).close(); }
@Test public void testAddInvoiceProcWithoutMetaDataUsingArrayParams() throws Exception { initializeAddInvoiceWithoutMetaData(false); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withProcedureName("add_invoice"); adder.declareParameters( new SqlParameter("amount", Types.INTEGER), new SqlParameter("custid", Types.INTEGER), new SqlOutParameter("newid", Types.INTEGER)); Number newId = adder.executeObject(Number.class, 1103, 3); assertEquals(4, newId.intValue()); verifyAddInvoiceWithoutMetaData(false); verify(connection, atLeastOnce()).close(); }
@Test public void testUnnamedParameterHandling() throws Exception { final String MY_PROC = "my_proc"; SimpleJdbcCall sproc = new SimpleJdbcCall(dataSource).withProcedureName(MY_PROC); // Shouldn't succeed in adding unnamed parameter thrown.expect(InvalidDataAccessApiUsageException.class); sproc.addDeclaredParameter(new SqlParameter(1)); }
@Override public SimpleJdbcCall withProcedureName(String procedureName) { setProcedureName(procedureName); setFunction(false); return this; }
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) .withSchemaName(schema) .withCatalogName(package) .withProcedureName(procedure)(); ... jdbcCall.addDeclaredParameter(new SqlParameter(paramName, OracleTypes.NUMBER)); ... jdbcCall.execute(callParams);
@Test public void testCorrectProcedureStatementNamed() throws Exception { initializeAddInvoiceWithMetaData(false); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withNamedBinding().withProcedureName("add_invoice"); adder.compile(); verifyStatement(adder, "{call ADD_INVOICE(AMOUNT => ?, CUSTID => ?, NEWID => ?)}"); }
private SimpleJdbcCall createSimpleJdbcCall(String storedProcedureName) { final SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(this.dataSource); if (this.isFunction) { simpleJdbcCall.withFunctionName(storedProcedureName); } else { simpleJdbcCall.withProcedureName(storedProcedureName); } if (this.ignoreColumnMetaData) { simpleJdbcCall.withoutProcedureColumnMetaDataAccess(); } simpleJdbcCall.declareParameters(this.sqlParameters.toArray(new SqlParameter[this.sqlParameters.size()])); if (!this.returningResultSetRowMappers.isEmpty()) { for (Entry<String, RowMapper<?>> mapEntry : this.returningResultSetRowMappers.entrySet()) { simpleJdbcCall.returningResultSet(mapEntry.getKey(), mapEntry.getValue()); } } if (this.returnValueRequired) { simpleJdbcCall.withReturnValue(); } simpleJdbcCall.getJdbcTemplate().setSkipUndeclaredResults(this.skipUndeclaredResults); return simpleJdbcCall; }
@Test public void testNoSuchStoredProcedure() throws Exception { final String NO_SUCH_PROC = "x"; SQLException sqlException = new SQLException("Syntax error or access violation exception", "42000"); given(databaseMetaData.getDatabaseProductName()).willReturn("MyDB"); given(databaseMetaData.getDatabaseProductName()).willReturn("MyDB"); given(databaseMetaData.getUserName()).willReturn("me"); given(databaseMetaData.storesLowerCaseIdentifiers()).willReturn(true); given(callableStatement.execute()).willThrow(sqlException); given(connection.prepareCall("{call " + NO_SUCH_PROC + "()}")).willReturn(callableStatement); SimpleJdbcCall sproc = new SimpleJdbcCall(dataSource).withProcedureName(NO_SUCH_PROC); thrown.expect(BadSqlGrammarException.class); thrown.expect(exceptionCause(sameInstance(sqlException))); try { sproc.execute(); } finally { verify(callableStatement).close(); verify(connection, atLeastOnce()).close(); } }
@Override public String getEntityNameByIdAndType(Guid objectId, VdcObjectType vdcObjectType) { MapSqlParameterSource parameterSource = sqlParameterSourceProvider.get() .addValue("entity_id", objectId) .addValue("object_type", vdcObjectType.getValue()); Map<String, Object> dbResults = new SimpleJdbcCall(jdbcTemplate) .withFunctionName("fn_get_entity_name") .execute(parameterSource); String resultKey = dbEngineDialect.getFunctionReturnKey(); return dbResults.get(resultKey) != null ? dbResults.get(resultKey).toString() : null; }
@Test public void testAddInvoiceFuncWithMetaDataUsingArrayParams() throws Exception { initializeAddInvoiceWithMetaData(true); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withFunctionName("add_invoice"); Number newId = adder.executeFunction(Number.class, 1103, 3); assertEquals(4, newId.intValue()); verifyAddInvoiceWithMetaData(true); verify(connection, atLeastOnce()).close(); }
@Override public void callProcedure(String procedureName) { jdbcCall = jdbcCall.withProcedureName(procedureName); jdbcCall.execute(); }
@Test public void testCorrectFunctionStatementNamed() throws Exception { initializeAddInvoiceWithMetaData(true); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withNamedBinding().withFunctionName("add_invoice"); adder.compile(); verifyStatement(adder, "{? = call ADD_INVOICE(AMOUNT => ?, CUSTID => ?)}"); }
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(dataSource); simpleJdbcCall.withCatalogName("dbo"); simpleJdbcCall.withProcedureName("procedureA "); simpleJdbcCall.setAccessCallParameterMetaData(false); simpleJdbcCall.declareParameters(new new SqlOutParameter("a",Types.NUMERIC)); simpleJdbcCall.execute();
@Test public void testAddInvoiceProcWithMetaDataUsingArrayParams() throws Exception { initializeAddInvoiceWithMetaData(false); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withProcedureName("add_invoice"); Number newId = adder.executeObject(Number.class, 1103, 3); assertEquals(4, newId.intValue()); verifyAddInvoiceWithMetaData(false); verify(connection, atLeastOnce()).close(); }
@Test public void testCorrectFunctionStatement() throws Exception { initializeAddInvoiceWithMetaData(true); SimpleJdbcCall adder = new SimpleJdbcCall(dataSource).withFunctionName("add_invoice"); adder.compile(); verifyStatement(adder, "{? = call ADD_INVOICE(?, ?)}"); }
public JdbcInsertCommand(DataSource dataSource, Table table, List<Object[]> argsList) { this.jdbcCall = new SimpleJdbcCall(dataSource); this.jdbcCall.setProcedureName(SQLNaming.getInsertProcedureName(table.name, table.myPackage.model.project.databaseEngine)); this.table = table; this.argsList = argsList; }
@Override public List callProcedureQueryListBeans(String procedureName, Map<String, Object> inParameters, Class<?> outBeansType) { jdbcCall = jdbcCall.withProcedureName(procedureName); if (outBeansType != null) { jdbcCall = jdbcCall.returningResultSet("list_beans", generateRowMapper(outBeansType)); } List list = (List) jdbcCall.execute(inParameters).get("list_beans"); logger.info("-- SQL参数:[{}]", inParameters); logger.info("-- 响应条目:[{}]", list.size()); return list; }
SimpleJdbcCall call = Util.getSimpleJdbcCallInstance(); call.setProcedureName("PROCED_CONDOMINIAL"); call.declareParameters( new SqlParameter("CONDOMINIO", Types.VARCHAR), new SqlParameter("BLOCO", Types.VARCHAR),, new SqlOutParameter("P_NUMERO", Types.NUMERIC), new SqlOutParameter("P_LOG", Types.VARCHAR)); Map<String, Object> parametros = new HashMap<String, Object>(); parametros.put("CONDOMINIO_IC", descricaoCondominio); parametros.put("BLOCO_IC", imovelCondominial.getBloco()); Map<String, Object> out = call.execute(parametros); BigDecimal chave = (BigDecimal) out.get("P_NUMERO"); imovelCondominial.setId(chave.longValue());
CallCreator createCallForModification(final String procedureName) { return () -> new SimpleJdbcCall(jdbcTemplate).withProcedureName(procedureName); }
@Inject OsInfoDaoImpl(JdbcTemplate jdbcTemplate, SimpleJdbcCallsHandler callsHandler, Provider<CustomMapSqlParameterSource> sqlParameterSourceProvider) { Objects.requireNonNull(callsHandler); Objects.requireNonNull(sqlParameterSourceProvider); this.callsHandler = callsHandler; this.sqlParameterSourceProvider = sqlParameterSourceProvider; simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate); }