我在 PostgreSQL
数据库中编写了一个简单的函数。从我的 JAVA
源代码中,我调用这个函数,如
SELECT getData('active');
我获取的数据正确,但数据集的表头显示的是我的函数名称 (getdata
),而不是 userid
和 username
。在这种情况下我如何获取数据?
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/