【发布时间】:2011-10-27 10:10:19
【问题描述】:
我在使用通过使用 Spring JdbcTemplate 类的代码在 MySQL 中创建的函数时遇到问题。
当我直接在 Workbench 中测试功能是否正常工作时,根据过去的条目返回 true 或 false。但是,当我尝试通过 Java 代码获取结果时,总是返回 false,这让我相信这是某种类型转换失败。
为什么变量“结果”总是假的?
-
功能
CREATE DEFINER=`root`@`localhost` FUNCTION `COMPARA_QTDE_EMPRESA`(AG INT, P INT, ANO INT, AINSERIR INT) RETURNS tinyint(1) DETERMINISTIC BEGIN DECLARE TOTAL_EMPRESA_PESQUISA INT; DECLARE TOTAL_EMPRESA_AGENTE INT; SELECT IF(COUNT(*), EP.TOTAL, 0) INTO TOTAL_EMPRESA_PESQUISA FROM CTRLPRODUCAO.EMPRESA_PESQUISA EP WHERE EP.AGENCIA = AG AND EP.PESQUISA = P AND EP.ANO = ANO; SELECT IFNULL(SUM(EA.TOTAL), 0) INTO TOTAL_EMPRESA_AGENTE FROM CTRLPRODUCAO.EMPRESA_AGENTE EA WHERE EA.AGENCIA = AG AND EA.PESQUISA = P AND EA.ANO = ANO; RETURN IF(TOTAL_EMPRESA_PESQUISA = 0 , FALSE ,(TOTAL_EMPRESA_PESQUISA < (TOTAL_EMPRESA_AGENTE) + AINSERIR));结束
-
Java 代码
(...) Object[] args = new Object[4]; int[] tipos = new int[4]; args[0] = ag.getId(); tipos[0] = Types.INTEGER; args[1] = p.getId(); tipos[1] = Types.INTEGER; args[2] = ano.getAno(); tipos[2] = Types.INTEGER; args[3] = total.getTotal(); tipos[3] = Types.INTEGER; boolean result = (Boolean)getJdbcTemplate().queryForObject("SELECT COMPARA_QTDE_EMPRESA (?, ?, ?, ?)"), args, tipos, Boolean.class);
【问题讨论】:
标签: mysql spring function jdbctemplate