使用参数化查询获取“SQL语法错误”

时间:2011-06-30 07:24:53

标签: mysql jasper-reports

我想使用iReport生成报告。我应该将Area_code,units,condition(意为< > =)作为参数。我想从 customer 表中获取一些字段,这些字段满足 calculatedbillamounthistory <或>=个单位数>表。

举个例子,

SELECT Cus.Cusname,Cus.Cus_Address,Cus.CusID 
FROM customer Cus, calculatedbillamounthistory Cal 
WHERE Cal.consumedunits > 90 And Cus.CusID = Cal.cusid AND Cus.Area_code = Hr0111.

我应该将'&gt;' '90''Hr0111'值作为参数传递。

这是我的疑问:

SELECT Cus.Cusname,Cus.Cus_Address,Cus.CusID FROM customer Cus, calculatedbillamounthistory Cal WHERE Cal.consumedunits $(condition) $(units) AND Cus.CusID = Cal.cusid AND Cus.Area_code = $(Area_code);

当我将查询提供给jaspersoft时,它将显示错误:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$(condition) $(units) And Cus.CusID = Cal.cusid AND Cus.Area_code = $(Area_code)' at line 1"

有人能帮助我吗?

3 个答案:

答案 0 :(得分:0)

如何使用参数的$P!{..}语法,例如:

SELECT Cus.Cusname,Cus.Cus_Address,Cus.CusID FROM customer Cus, calculatedbillamounthistory Cal WHERE Cal.consumedunits $P!{condition} $P!{units} AND Cus.CusID = Cal.cusid AND Cus.Area_code = $P!{Area_code};

$P!{..}语法在执行查询之前评估参数。使用$P{..}准备好的语句,至少对condition参数不起作用。

答案 1 :(得分:0)

对条件和单位参数使用单值输入控件,并在Ireport中尝试此查询

  SELECT Cus.Cusname,Cus.Cus_Address,Cus.CusID 
  FROM customer Cus,calculatedbillamounthistory Cal 
  WHERE Cal.consumedunits $P{condition} $P{units} 
        AND Cus.CusID = Cal.cusid 
        AND Cus.Area_code = $P{Area_code};

答案 2 :(得分:0)

您可以将整个WERE部分出站到参数中并将其附加到您的查询中:

参数:WHERE(String)

WHERE =“Cal.consumedunits&gt; 90和Cus.CusID = Cal.cusid AND Cus.Area_code = Hr0111”

SQL: ELECT Cus.Cusname,Cus.Cus_Address,Cus.CusID 来自客户Cus,calculatedbillamounthistory Cal 在哪里$ P!{WHERE}