Jaspersoft Studio:如何将数组参数(数字表)发送到 pl/sql 函数



我想将数字列表发送到 pl/sql 函数。参数的类型定义为:TYPE colNumbers IS TABLE OF NUMBER(5,0) 。在正常的SQL查询中,我调用我的函数

select (Test.argLoN(colNumbers(1,2,3,4,5,6))) as "asd" from dual 

这部分工作正常。

我读到JR引擎调用参数的toString()方法。因此,在 ireport 5.5.1(eclipse 插件版本)中,我创建了一个类型为 String 的参数,并给他"默认表达式"1、2、3、4、5、6、7、8、9、10"。在查询对话框中,我调用该语句:

select (Test.argLoN(colNumbers($P{val})) as "asd" 
from dual

如果我运行报告,我会收到此错误消息:

net.sf.jasperreports.engine.JRException: 执行 SQL 语句时出错:

测试

如果我理解正确的话。

select (Test.argLoN(colNumbers($P{val})) as "asd" from dual" 

与 val = "1,2,3,4,5" 应该创建

select (Test.argLoN(colNumbers(1,2,3,4,5))) as "asd" from dual

还是我误会了?

您需要在 iReport 中使用参数 literal。

$P!{Values}

而不是

$P{Values}

使用$P!{} 将尽量不转义或"参数化"输入。 如何在这样的语句中明显使用值将取决于您的数据源。

最新更新