2016-01-21 79 views
1

我似乎無法從postgres db中返回值...任何想法如何解決此問題?無法從Vertex3中的Postgres存儲過程返回值

JsonArray outParam = new JsonArray().add("integer"); 

connection.callWithParams(spAddUser, params, outParam, response -> { 

    if (response.succeeded()) { 
     ResultSet result = response.result(); 
    ... 

我得到這個錯誤說:

org.postgresql.util.PSQLException: No function outputs were registered. 
at org.postgresql.jdbc.PgStatement.checkIndex(PgStatement.java:2208) 
at org.postgresql.jdbc.PgStatement.checkIndex(PgStatement.java:2191) 
at org.postgresql.jdbc.PgStatement.getObject(PgStatement.java:2088) 
at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.getObject(NewProxyCallableStatement.java:172) 
at io.vertx.ext.jdbc.impl.actions.JDBCCallable.convertOutputs(JDBCCallable.java:83) 
at io.vertx.ext.jdbc.impl.actions.JDBCCallable.execute(JDBCCallable.java:59) 
at io.vertx.ext.jdbc.impl.actions.JDBCCallable.execute(JDBCCallable.java:33) 
at io.vertx.ext.jdbc.impl.actions.AbstractJDBCAction.handle(AbstractJDBCAction.java:48) 

這裏是我的示例存儲過程:

create or replace function addUser(_acid int, _slno int, _dob date) 
returns int as $$ 

    insert into users (acid,slno,dob) 
    values (_acid, _slno, _dob) 
    returning uid; 
$$ language sql; 

回答

1

我發現我沒有在輸出PARAMS如果上午通過在我的存儲過程中不使用IN/OUT。因此,將輸出參數設置爲null可以解決問題。

connection.callWithParams(spAddUser, params, null, response -> { 

if (response.succeeded()) { 
    ResultSet result = response.result(); 
...