Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse BIRT报告-在sql查询中使用相同的参数多次_Eclipse_Birt - Fatal编程技术网

Eclipse BIRT报告-在sql查询中使用相同的参数多次

Eclipse BIRT报告-在sql查询中使用相同的参数多次,eclipse,birt,Eclipse,Birt,我有一个where条款: WHERE p.ROLE = 'doctor' AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING('01.01.2012', 1, 2)) AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING('01.01.2012', 4, 2)) AND (p8.PA_Name='Event_Year_From' AND P8.P

我有一个where条款:

WHERE p.ROLE = 'doctor'
AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING('01.01.2012', 1, 2))
AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING('01.01.2012', 4, 2))
AND (p8.PA_Name='Event_Year_From' AND P8.PA_Value>=SUBSTRING('01.01.2012', 7, 4)))
AND ((p9.PA_Name='Event_Day_To' AND P9.PA_Value<=SUBSTRING('30.12.2012', 1, 2))
AND (p10.PA_Name='Event_Month_To' AND P10.PA_Value<=SUBSTRING('30.12.2012', 4, 2))
AND (p11.PA_Name='Event_Year_To' AND P11.PA_Value<=SUBSTRING('30.12.2012', 7, 4)))
其中p.ROLE='doctor'
和((p6.PA_Name='Event_Day_From'和p6.PA_Value>=子字符串('01.01.2012',1,2))
和(p7.PA_Name='Event_Month_From'和p7.PA_Value>=子字符串('01.01.2012',4,2))
和(p8.PA_Name='Event_Year_From'和p8.PA_Value>=子字符串('01.01.2012',7,4)))

和((p9.PA_Name='Event_Day_To'和p9.PA_Value[EDIT]BIRT使用普通JDBC,但它不支持“命名参数”,因此无法编写:

... p6.PA_Value>= SUBSTRING(:start, 1, 2) ...
这将给出一个错误

其他选项是使用属性绑定或JavaScript构建查询,并在执行之前替换部分查询


一些数据库还支持
语法,以便为
参数指定别名。
说明了如何使用此语法。

我通过使用参数中的一行创建表,并将其附加到报表查询,解决了此问题,如下所示:

,(select ? SDate, ? EDate) params
WHERE p.ROLE = 'doctor'
AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING(params.SDate, 1, 2))
AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING(params.SDate, 4, 2))
AND (p8.PA_Name='Event_Year_From' AND P8.PA_Value>=SUBSTRING(params.SDate, 7, 4)))
AND ((p9.PA_Name='Event_Day_To' AND P9.PA_Value<=SUBSTRING(params.EDate, 1, 2))
AND (p10.PA_Name='Event_Month_To' AND P10.PA_Value<=SUBSTRING(params.EDate, 4, 2))
AND (p11.PA_Name='Event_Year_To' AND P11.PA_Value<=SUBSTRING(params.EDate, 7, 4)))
,(选择?SDate,?EDate)参数
其中p.ROLE='doctor'
和((p6.PA_Name='Event_Day_From'和p6.PA_Value>=子字符串(params.SDate,1,2))
和(p7.PA_Name='Event_Month_From'和p7.PA_Value>=子字符串(params.SDate,4,2))
和(p8.PA_Name='Event_Year_From'和p8.PA_Value>=子字符串(params.SDate,7,4)))

及((p9.PA_Name='Event_Day_To'和p9.PA_ValueWhich数据库?使用Oracle时有一个解决方法:我使用的是microsoft sql Server好的,我的答案已经完全超负荷工作了。尝试动态查询修改。它并不完美,但适用于您的情况,因为您只需要字符串。有没有办法将参数传递给过程?BIRT支持ca存储过程:这里的参数名称是什么?BIRT是如何获得它们的?