从PostgreSQL函数获取数据到java
我在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