2016-10-02 4 views
0

다음과 같은 상황에서 JDBC로부터 PostgreSQL 함수를 호출하는 데 문제가 있습니다.JDBC를 통해 PostgreSQL 저장 함수를 실행할 때 예외 "함수가 없습니다"

postgres=# \df public.endpoint_organizations 
              List of functions 
Schema |   Name   |    Result data type    | Argument data types | Type 
--------+------------------------+------------------------------------------+---------------------+-------- 
public | endpoint_organizations | TABLE(organizationid integer, name text) | staffid1 integer | normal 
(1 row) 

이 같은 자바에서 호출하고 있습니다 : 저장 기능 endpoint_organizations는 다음과 같이 정의된다

int staffId = 1 
PreparedStatement endpointOrganizations = connection.prepareStatement("SELECT * FROM endpoint_organizations (?)"); 
endpointOrganizations.setInt(1, staffId); 
ResultSet resultSet = endpointOrganizations.executeQuery(); 

그리고 나는이 예외가 나타납니다

org.postgresql.util.PSQLException: 
ERROR: function endpoint_organizations(integer) does not exist 
Hint: No function matches the given name and argument types. You might need to add explicit type casts. 
Position: 15 

이유가 이유가 될 수 무엇을 ? 내가 잘못 본 것이 아니라면, 이것은 이전에 효과가있었습니다. 지금은 두 번 확인하고 세 번 검사했지만 문제의 원인을 알 수는 없습니다.

+0

jdbc 사용자에게 해당 기능을 실행할 수있는 권한이 있습니까? function endpoint_organizations에서 grant를 실행하지 않으면; – d1ll1nger

+0

@ d1ll1nger 예, 있습니다. 만약'psql -U '을 데이터베이스에 저장하고'select * from endpoint_organizations (1)'를 사용하면 문제가 없습니다. – Drux

답변

1

이것은 물론 내 바보 같은 실수였습니다. PostgreSQL에 psql -U <user> 대신에 psql -U <user> <database> 대신에 업데이트를 저장 했으므로 <database> 대신 데이터베이스 postgres이 적용되고 업데이트는 <database>에 연결됩니다.

올바른 데이터베이스에서 업데이트를 수행하면 이제 정상적으로 돌아갑니다.