如何将日期参数从报表生成器查询设计器传递到 Oracle 数据库

问题描述 投票:0回答:2

我正在使用连接到 Oracle 数据库的 Report Builder 3.0。 我试图在查询中传递日期参数但没有成功,我不知道确切的语法。 我试过了:

SELECT * 
FROM igeneral.GCL_CLAIMS
WHERE CREATED_BY IN (:CREATED_BY) AND CLAIM_YEAR IN(:UW_YEAR)  
  AND (Trunc(LOSS_DATE,'mm/dd/yyyy') BETWEEN to_char(':From', 'mm/dd/yyyy') 
  AND to_char('To', 'mm/dd/yyyy'))

我收到此错误:

ORA-01036: illegal variable name/number

我也尝试过这个:

SELECT * 
FROM igeneral.GCL_CLAIMS 
WHERE CREATED_BY IN (:CREATED_BY) AND CLAIM_YEAR IN(:UW_YEAR)  
  AND (LOSS_DATE BETWEEN ':From' AND ':To') 

我收到此错误:

ORA-01036: illegal variable name/number

谢谢

oracle date reporting-services reporting oraclereports
2个回答
0
投票

解决方案取决于 from 和 to 参数的

data type

如果您的参数是

DATE
数据类型,请使用
to_char
将日期转换为您想要显示的所需格式的文字。否则,如果参数是
VARCHAR2
数据类型,请使用
to_date
将日期文字转换为日期以进行比较。

在您的情况下,

LOSS_DATE
列可能是日期,并且您的参数是文字,因此请使用正确的格式掩码在参数上使用“TO_DATE”。

LOSS_DATE BETWEEN to_date(':From', 'mm/dd/yyyy') AND to_date('To', 'mm/dd/yyyy')


0
投票

当对象导航器中标识的参数与查询中引用的绑定变量不对应时,Oracle 报告中通常会出现错误 ORA-01036:非法变量名称/编号。

您的

:From
:To
绑定变量是否出现在对象导航器的“用户参数”中? 我确实注意到您引用的代码前面没有用于
:To
绑定变量的冒号。

正确示例

这里是种子 Oracle 报告的“用户参数”的屏幕截图......特别是

:p_as_of_date
绑定变量。请注意,使用如图所示的属性检查器,可以识别数据类型和输入掩码。您是否以这种方式设置参数
:From
:To
?具体来说,如果您的参数用作日期,我将确保在属性检查器中将数据类型设置为日期。 enter image description here

这里是“种子”Oracle 报告中 :p_as_of_date 绑定变量的片段,这里它在查询中被引用:

 where      TRUNC(ps.gl_date)    <= :p_as_of_date 

请注意,不需要铸造。 根据您的询问,我将采用这种方法(再次强调,不进行强制转换):

AND TRUNC(LOSS_DATE,'mm/dd/yyyy') BETWEEN :From AND :To

因此,我只需确保“用户参数”中引用的绑定变量与查询中的绑定变量相对应。

© www.soinside.com 2019 - 2024. All rights reserved.