java - 从 PostgreSQL 函数获取数据到 java

标签 java function postgresql

我在 PostgreSQL 数据库中编写了一个简单的函数。从我的 JAVA 源代码中,我调用这个函数,如

SELECT getData('active');

我获取的数据正确,但数据集的表头显示的是我的函数名称 (getdata),而不是 useridusername。在这种情况下我如何获取数据?

CREATE or REPLACE FUNCTION getData(value text) 
RETURNS  TABLE(
    userid integer,
    username varchar(50)
) AS -- text AS --
$body$
DECLARE
    fullsql TEXT;
    records RECORD;
    exeQuery TEXT;
BEGIN

fullsql:= 'SELECT userid, username from user_index where status='''value'''';

exeQuery := 'SELECT * FROM (' || fullsql || ') AS records';

RETURN QUERY EXECUTE exeQuery;

END
$body$
LANGUAGE plpgsql;

当前输出为

getdate
--------------
501,alexanda
502,cathie

但我想输出如下:

userid  username
------|---------
501,alexanda
502,cathie

我正在努力实现以下目标:

SELECT usr.username FROM cust_invoice_index as inv
INNER JOIN
(SELECT getdata('active')) as usr ON (usr.userid=inv.userid_edit)

以下查询工作正常:

SELECT usr.username FROM cust_invoice_index as inv
INNER JOIN
(SELECT userid, username from user_index where status='active') as usr ON (usr.userid=inv.userid_edit)

最佳答案

当您的函数返回结果集时,您应该使用 select * from getdata('active')

不要将对设置返回函数的调用放入选择列表中。

SELECT usr.username 
FROM cust_invoice_index as inv
 JOIN (SELECT * FROM getdata('active')) as usr ON usr.userid=inv.userid_edit

关于java - 从 PostgreSQL 函数获取数据到 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661349/

相关文章:

java - 在域用户安全组内的 Microsoft AD 中查找用户的组成员

C++ 成员函数指针定义

python - 将函数或类实例传递给 multiprocessing.Process 的 "target"参数是否安全,而没有密集复制的风险?

function - Ocaml 99 问题 : can't understand the solution for generating combinations

c# - 执行带有参数postgresql的存储过程

java - 在分配大量字符串数据的应用程序中优化字符串数据的最佳方法

java - 如何在heroku中复制已部署的应用程序?

mysql - 按 ID 分组并在 SQL 中查找最小和最大时间

sql - 如何在没有索引的情况下加速 Postgres 中的最小/最大聚合

Java - 按键事件和按键绑定(bind)