如何将postgresql中存储过程中的值获取到java应用程序中?我总是出错

如何将postgresql中存储过程中的值获取到java应用程序中?我总是出错,java,sql,database,postgresql,stored-procedures,Java,Sql,Database,Postgresql,Stored Procedures,我用一个简单的SELECT语句在我的postgres数据库中创建了一个存储过程: SELECT DISTINCT device FROM dev_op_test ORDER BY device; 在java应用程序中,我试图将设备列表放入resultset: // Get unique devices from table String sql = " { ?= call sp_search_devices() }"; CallableStatement statement

我用一个简单的SELECT语句在我的postgres数据库中创建了一个存储过程:

SELECT DISTINCT device FROM dev_op_test ORDER BY device;
在java应用程序中,我试图将设备列表放入resultset:

// Get unique devices from table
String sql = " { ?= call sp_search_devices() }";
CallableStatement statement = pgConn.prepareCall(sql);
ResultSet rs = statement.executeQuery();
我不断发现以下错误:

你知道我做错了什么吗?sp_search_devices()不需要任何输入参数,因为它只是一个非常简单的SELECT语句。

最后使用了:

CREATE OR REPLACE FUNCTION sp_search_test_ui_devices()
    RETURNS SETOF text AS $$

    SELECT DISTINCT device AS device FROM dev_op_test ORDER BY device;
    
$$ LANGUAGE SQL;

最终使用了:

CREATE OR REPLACE FUNCTION sp_search_test_ui_devices()
    RETURNS SETOF text AS $$

    SELECT DISTINCT device AS device FROM dev_op_test ORDER BY device;
    
$$ LANGUAGE SQL;


如果要返回结果,请使用集合返回函数,而不是过程谢谢。它确实按照你建议的方式工作。从SQL Server世界来到postgres有时有点令人沮丧:-)如果要返回结果,请使用集合返回函数,而不是过程谢谢。它确实按照你建议的方式工作。从SQL Server世界来到postgres有时有点令人沮丧:-)