当它是一个允许多个值的列表时,如何检查我的参数在脚本中是否为空?
How can I check if my parameter is null in the script when it's a list that allow multiple values?
我在级联参数中创建了非必需参数:
month-opt 参数不是必需的,并且允许多个值。
我在查询中使用了这个参数,所以我创建了一个脚本:
if(params["MONTH-OPT"].value != null && params["MONTH-OPT"].value != ""){
this.queryText = this.queryText + " AND MONTH IN (" + params["MONTH-OPT"].value.join("," ) +") ";
}
我的问题是:如果用户 select 一个空值:
然后,我遇到了一个问题:
Cannot get the result set metadata.
org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement does not return a ResultSet object.
SQL error #1:Incorrect syntax near ')'.
;
java.sql.SQLException: Incorrect syntax near ')'. (Element ID:18061)
似乎关于null的测试不正确,因为它绕过了检查。如果我不允许多个值,它正在工作...
当您使用 IN 运算符时,要求始终在括号中包含一些值。
INVALID SYNTAX
select * from table where id in ()
Valid Syntax
select * from table where id in (null)
or
select * from table where id in ('')
等
更改您的代码以传递空值以解决问题。
您可以在脚本中使用简单的 if 条件
if params["MONTH-OPT"].value = Null
select * from table
else
select * from table where id in (1, 2) etc
基于:https://fr.scribd.com/document/15350321/BIRT-Multi-Value-Cascading-Parameters
修复可以(我认为这不是最好的...):
if(params["MONTH-OPT"].value != null ){
var monthOptionNullValue = params["MONTH-OPT"].toString();
if( monthOptionNullValue != null && monthOptionNullValue != ""){
this.queryText = this.queryText + " AND MONTH IN (" + params["MONTH-OPT"].value.join("," ) +") ";
}
}
感谢 srp 的帮助
我在级联参数中创建了非必需参数:
month-opt 参数不是必需的,并且允许多个值。
我在查询中使用了这个参数,所以我创建了一个脚本:
if(params["MONTH-OPT"].value != null && params["MONTH-OPT"].value != ""){
this.queryText = this.queryText + " AND MONTH IN (" + params["MONTH-OPT"].value.join("," ) +") ";
}
我的问题是:如果用户 select 一个空值:
然后,我遇到了一个问题:
Cannot get the result set metadata.
org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement does not return a ResultSet object.
SQL error #1:Incorrect syntax near ')'.
;
java.sql.SQLException: Incorrect syntax near ')'. (Element ID:18061)
似乎关于null的测试不正确,因为它绕过了检查。如果我不允许多个值,它正在工作...
当您使用 IN 运算符时,要求始终在括号中包含一些值。
INVALID SYNTAX
select * from table where id in ()
Valid Syntax
select * from table where id in (null)
or
select * from table where id in ('')
等 更改您的代码以传递空值以解决问题。
您可以在脚本中使用简单的 if 条件
if params["MONTH-OPT"].value = Null
select * from table
else
select * from table where id in (1, 2) etc
基于:https://fr.scribd.com/document/15350321/BIRT-Multi-Value-Cascading-Parameters
修复可以(我认为这不是最好的...):
if(params["MONTH-OPT"].value != null ){
var monthOptionNullValue = params["MONTH-OPT"].toString();
if( monthOptionNullValue != null && monthOptionNullValue != ""){
this.queryText = this.queryText + " AND MONTH IN (" + params["MONTH-OPT"].value.join("," ) +") ";
}
}
感谢 srp 的帮助