« ORA-30175: invalid type given for an argument »
DBA » http://www.anysql.net/dba/oracle_error_30175.html 2007-08-09今天朋友遇到一个比较郁闷的问题, 想了一段时间还没有想出来, 于是在网上问我. 下面这一段代码报了这个错误:
declare
l_max_date VARCHAR2 (50) := ’2999-12-31 23:59:59′;
l_format VARCHAR2 (50) := ‘YYYY-MM-DD HH24:MI:SS’;
begin
INSERT INTO …
SELECT …. FROM tab1@link1 A, tab2@link2 B
WHERE join_condition
AND A.COL1 > TO_DATE (l_max_date, l_format);
end;
/
我在本机上试了是好的啊. 于是我就说我试的版本是10g的, 他说他的是9208的, 于是第一个想法就是Bug了? 正常我们将要一致同意遇到Bug时, 朋友检查了一个远程表的列类型, 发现A.COL1的类型是TIMESTAMP WITH TIME ZONE, 最后改了变量类型就好了.
我们还真不能随便怀疑Oracle, 那怕是遇到一些让你很不理解的现象, 有可能是你错了或漏了什么地方, 仔细检查一下.


这个我有同感.
出了问题以后, 经常怀疑是不是Oracle系统的问题;
其实相比Oracle其它产品(Grid Control, Mid-Tier Application Server)Oracle数据库是非常稳健的, 只是因为自己粗心罢了.
平时遇到问题, 自已想不通时就这么想.