0
我在使用通過使用Spring JdbcTemplate類的代碼在MySQL中創建的函數時遇到問題。函數返回(MySQL + Spring)
當我在Workbench中直接測試函數時,它可以正常工作,根據過去的條目返回true或false。但是,當我嘗試通過Java代碼獲取結果時,總是返回false,這導致我認爲這是某種類型轉換失敗。
爲什麼變量'result'總是假?
功能
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));
END
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);
我很欣賞你的反應,但沒有奏效。繼續返回false。利用你的想法,我將代碼改爲「boolean result =(getJdbcTemplate()。queryForInt(」SELECT COMPARA_QTDE_EMPRESA(?,?,?,?)「),args,tipos)!= 0);」 ,但也沒有工作。總是得到結果= 0。 –