我正在使用SSRS 2005来运行Oracle数据源。我使用了这个简单的查询
SELECT order_number FROM apps.oe_order_headers_all
WHERE ordered_date >= :start
AND ordered_date < :end + 1
and rownum = 1
首先我得到了:
ORA-01745:无效的主机/绑定变量名称
我忽略了错误,然后点击刷新(让SSRS确定返回的列和使用的参数)
SSRS提示我输入参数的值,我尝试了01/01/2014,01-JAN-2014,01-01-2014两个参数,但都得到了这个错误:
无法将System.String类型绑定为Blob。 (System.Data.OracleClient的)
order_number是NUNBER,ordered_date是oracle中的DATE。
不确定它是pl sql的东西还是SSRS的东西?
答案 0 :(得分:4)
不确定第二个错误是否只是初始错误的后续行动,但第一个错误是因为start
is a reserved word in Oracle;您将在SQL * Plus或SQL Developer中获得ORA-01745:
SQL> var start varchar2(10);
SQL> select :start from dual;
select :start from dual
*
ERROR at line 1:
ORA-01745: invalid host/bind variable name
但是允许 end
。如果您将绑定变量名称更改为,例如:start_date
- 并添加OracleUser建议的显式to_date(:start_date, 'YYYY-MM-DD')
和to_date(:end_date, 'YYYY-MM-DD')
,以便您知道输入变量的格式 - 将会消失
我只能想象这也会解决第二个错误,我猜这是因为参数在那个时候处于奇数状态。