我想将数字列表发送到 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!{} 将尽量不转义或"参数化"输入。 如何在这样的语句中明显使用值将取决于您的数据源。