0
MySQLで作成された関数をSpring JdbcTemplateクラスを使用するコードで使用する際に問題があります。function return(MySQL + Spring)
Workbenchで直接関数をテストすると正しく動作し、過去のエントリに応じてtrueまたはfalseが返されます。しかし、Javaコードで結果を取得しようとすると、常にfalseが返されます。これは、これが型変換に失敗したと考えています。
なぜ変数 'result'は常に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));
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);" 、しかしまた働かなかった。常にresult = 0を取得します。 –