我使用PostgreSQL
作为DBMS,在我当前的报告中,我需要一个可选的String参数来获取Id
的记录,这是一个String
字段。
所以我将默认值表达式设置为:
($P{Param} == null || $P{Param}.equals("")) ? "" : "AND id='" + $P{Param} + "'"
当该字段为空时,创建的报告没有问题,但是当我输入有效的ID时,编译器会抱怨:
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "160E0" Position: 3126
就像我在传递的值之前和之前添加双引号一样。有人知道如何在使用String值时处理这个问题吗?
答案 0 :(得分:0)
我想,您已经创建了一个名为Param的参数,在您的查询中,您有 $ P!{Param} 。事情是,只有当参数在提示后保持为NULL时才会设置默认值,因此当您输入ID时, $ {Param} 值将被传递到查询中,因为它是由用户输入的(没有< / strong> AND id =&#39; part)。
尝试创建第二个参数,让我们将其命名为 $ P {input} ;将其默认值设置为表达式,&#34;用作提示&#34;值为false。将其传递给您的查询( $ P!{input} )。现在,您有 $ {Param} 用于提示,当它的值设置为所需的ID时, $ P {input} 会设置为您的查询条件。