从iReport调用MSSQL存储过程

时间:2011-08-17 16:06:22

标签: sql sql-server jasper-reports ireport

我想从iReport调用MSSQL服务器中的存储过程。

查询:

SET QUOTED_IDENTIFIER OFF 
SET DATEFORMAT mdy 

Exec SP_SAMPLE '12-jan-2008', '12-jul-2011', 
"$P!{Param1}", 
"$P!{Param2}", 
1, 
"$P!{Param3}" 

SET QUOTED_IDENTIFIER ON
Where, 
    Param1 = 'A436F3A9-6A8B-40C4-B38E-567B05522449',
        '4DD40BC2-3390-4B1B-8841-        483A8FDAB2FD',
        'B95E8F04-6EE7-4BC6-BDD0-F95C4AFDAC0B',
        'AE757961-0E25-41B8-A382-    7600DDA0ABC7',
        '90B9CC0C-6090-4CEF-8BC9-9C8EA3C0F63C',
        '1E191B19-13D0-4CE2-B1EC-    3CFF9316887F',
        'A9EE7AE9-435C-4164-96F5-3DB20A6321BE',
        'DCD6D045-8B42-4B83-8C97-21EE9DFF644C'
    Param2 = '4E6E8464-F08A-4BB8-950F-38908E4E7B30',
        '76EBA40E-F898-4541-9208-8A6B3A35E082',
        '7C64DA92-C168-4A74-8955-F1974258AD12',
        '2E6DDC25-E037-4842-9E7F-2B9586561744'
    Param3 = 3EC43FB7-F258-4441-8188-A55E7BD40ADE 

请注意,存储过程param1param2param3在sqlserver中是text数据类型。而在iReport中,我将它们作为一个集合。

有没有人告诉我如何用双引号在iReport中生成上述查询?

此外,有没有办法在运行iReport时显示带有填充参数值的查询?

1 个答案:

答案 0 :(得分:0)

Jasper Reports使用两种类型的参数:$ P {name_parameter}和$ P!{name_parameter}。 你用$ P!查询中的参数,使您可以完全控制构建查询。


示例:

<parameter name="strParam1" class="java.lang.String"/>
<parameter name="strParam2" class="java.lang.String"/>
<parameter name="strParam3" class="java.lang.String"/>
<queryString><![CDATA[SELECT atr1 FROM mytable WHERE stratr1=$P{strParam1} AND stratr2=$P!{strParam2} AND stratr3=$P!{strParam3}]]></queryString>


如果:

strParam1 =  string1 // (without quotes)
strParam2 = 'string2' // param (with quotes)
strParam3 =  string3 // (without quotes)

结果查询将是:

SELECT atr1 FROM mytable WHERE stratr1='string1' AND stratr2='string2' AND stratr3=string3



  

另外,有没有办法用fill参数显示查询   运行iReport时的值?

在IReport 4.1中,您可以在输出控制台(iReport输出窗口)中查看结果查询。

您可以设置log4j.properties以查看自定义Java应用程序的结果查询。