Java에서 PostgreSQL 함수를 호출하면 왜 함수가 존재하지 않는다는 오류가 표시됩니까?
CREATE OR REPLACE FUNCTION replacePageRelevance(id INT, value REAL) RETURNS VOID AS $$
BEGIN
INSERT INTO pageRelevance VALUES (id,value);
EXCEPTION WHEN unique_violation THEN
UPDATE pageRelevance SET relevance = value WHERE pageId = id;
END
$$
LANGUAGE plpgsql;
그리고이 함수를 호출 코드 :
try (CallableStatement cstm = conn.prepareCall(PAGE_RELEVANCE_SQL)) {
for (Map.Entry<Integer, Double> entry : weightMap.entrySet()) {
cstm.setInt(1, entry.getKey());
cstm.setDouble(2, entry.getValue());
cstm.addBatch();
}
cstm.executeBatch();
} catch (SQLException e) {
LOGGER.error("Error discovering pages relevance: " + e.getNextException());
}
}
이 작동하지 않는, 내가 function replacepagerelevance(integer, double precision) doesn't exists.
것을 알리는 오류를 받고 있어요을
나는 데이터베이스에이 절차를 가지고있다. 왜? SELECT replacePageRelevance('882','8.0')
:
생성 된 호출이 있습니다. 내가 pgAdmin에서 이것을 실행하면, 그것은 자바에서 작동하지만,하지.
무엇 PostgreSQL의 유형은 배정 밀도와 호환? –
@ Renato : 그냥 ['double precision'] (http://www.postgresql.org/docs/current/static/datatype-numeric.html) –
해답과 설명에 감사드립니다. 정밀도가별로 필요 없어 변환을 사용하고 있습니다. –