2

我正在使用连接到 oracle 数据库的报表生成器 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

谢谢

4

2 回答 2

0

解决方案取决于data typefrom 和 to 参数。

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

在您的情况下,LOSS_DATE列很可能是 DATE,而您的参数是文字,因此使用正确的格式掩码在参数上使用 `TO_DATE。

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

于 2014-09-19T14:00:13.933 回答
0

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

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

正确的例子

这是种子 Oracle Report 的“用户参数”的屏幕截图......特别是:p_as_of_date绑定变量。请注意,图中的 Property Inspector 可以识别数据类型和输入掩码。你是这样设置参数:From:To吗?具体来说,如果您的参数被用作日期,我会确保在 Property Inspector 中将 Datatype 设置为 Date。 在此处输入图像描述

这是“种子”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

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

于 2014-09-19T14:14:15.077 回答