【问题标题】:"Unknown data type" error in jdbc calljdbc 调用中的“未知数据类型”错误
【发布时间】:2016-09-23 15:48:31
【问题描述】:

我正在尝试使用可调用语句在 Java 中调用 Postgres 函数。该函数的输入参数之一是时间戳类型。当我尝试从 java 调用该函数时,出现以下错误。

ERROR: function insrt_data(character varying, integer, bigint, unknown, character varying) does not exist

我的函数签名是:

insrt_data(
i_cd character varying,
i_prog_id smallint,
i_stat_id bigint,
i_dt date,
i_stat_cd character varying) RETURNS character varying

我的 jdbc 调用如下。 StrtDt 是一个 java.util.Date 字段。

String sql = "{call mySchema.insrt_data(?, ?, ?, ?, ?)}";    
java.sql.Date StartDt = new java.sql.Date(record.getStrtDt().getTime());
Map<String, Object> map = jdbcTemplate.call(connection -> {
            CallableStatement statement = connection.prepareCall(sql);
            statement.setString(1, record.getCd());
            statement.setInt(2, record.getProgId());
            statement.setLong(3, record.getId());
            statement.setDate(4, StartDt);
            statement.setString(5, record.getStatCd());
            statement.registerOutParameter(1, Types.VARCHAR);
            return statement;
        }, paramList);

【问题讨论】:

    标签: java sql postgresql date jdbc


    【解决方案1】:

    问题在于i_prog_cd。当我传递int 时,该函数需要smallint 作为值。 Postgres的smallint对应java中的short。将其更改为short 后,代码有效!

    【讨论】:

      猜你喜欢
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2019-05-27
      • 2019-02-27
      相关资源
      最近更新 更多