我创建了一个 PostgreSQL 函数
icalldetailsByAN(hNametext,start_date timestamp,end_date timestamp))
尝试通过更新 Jaspersoft Studio 中的数据集和查询编辑器来绑定我的 JasperReports 报告
select * from icalldetailsByAN($P{hName},$P{startDate},$P{endDate})
我没有得到结果
hName、startDate、endDate 是我在报告中创建的参数,它将作为函数的输入参数
icalldetailsByAN
当我使用输入从 PostgreSQL 执行函数 icaldetailsByAN 时,我得到正确的结果,但不确定我到底犯了什么错误。
对于任何想要使用 Postgresql 函数打印 jasper 报告的人。 Jasper 报告不支持 PostgreSQL 的 refcursor,如 Oracle REF_CURSOR。另一种方法是将函数更改为返回表而不是游标。例如:
CREATE OR REPLACE FUNCTION your_sql_function (
p_param_1 VARCHAR,
p_param_2 VARCHAR,
...,
p_param_n VARCHAR
) RETURNS TABLE (
col_1 VARCHAR,
col_2 VARCHAR,
...,
col_n VARCHAR
)
AS $$
BEGIN
RETURN QUERY SELECT
col_1,
col_2,
...,
col_n,
FROM
table
WHERE cola=p_param_1
AND colb=p_param_2;
END;
$$ LANGUAGE plpgsql STRICT;
然后在 Jasper 报告模板中像普通查询一样选择
<queryString language="SQL">
<![CDATA[
SELECT
*
FROM
your_sql_function(
$P{param_1},
$P{param_2},
...,
$P{param_n}
)
]]>
</queryString>