当前位置:懂科普 >

IT科技

> 怎么解决ora-00904: invalid identifier标识符无效

怎么解决ora-00904: invalid identifier标识符无效

是我没看懂还是什么,你的句子里面好像没A2啊 ,怎么提示ORA-00904: "A2"."T3": invalid identifier。 MERGE INTO teb1@zzxxcc te1 USING (select t1 tt1, t2 tt2,t3 tt3 from tes1) te2 ON (te1.cl1 = te2.tt1 ) WHEN MATCHED THEN UPDATE SET

使用oracle作为数据库引擎,在执行sql的时候,出现错误ORA-00904: invalid identifier,也就是标识符无效。

怎么解决ora-00904: invalid identifier标识符无效

材料/工具

电脑

方法

大部分情况下,此错误是由于引用了不存在的列名导致的。

我前阵子也遇到了类似的问题。你可以去检查下你的数据库,是不是少了一些字段。或者对比一下字段是不是字符什么的打错了。 然后可以检查一下, 是不是你的列里少了一个跟主键名字一样的字段。在数据库中,要有一列是与主键的名字相同的列才可以

怎么解决ora-00904: invalid identifier标识符无效 第2张

先确定数据库中引用到的列和自己sql中书写的列名是否一致。如有不同,修改过来,重新测试应该可以解决问题。

这是你SQL语句的问题,出现ORA-00904是数据库传过来的错误.你把你的SQL语句放到数据库里面查一下是一样的错,不是你代码的错误.应该是字段不存在或者字段值是字符类型的,你没有加上引号 , 根据你回复一楼的.应该是那个字段是int类型的.而你却给它

怎么解决ora-00904: invalid identifier标识符无效 第3张

对于某些工具生成的sql,可能导致列明和期望不符的情况,有些工具生成的列名会带有双引号,从而导致此错误。

SELECT 'Next Month' AS date_title, ADD_MONTHS(sysdate,1) AS date_value FROM dual 函数名是 ADD_MONTHS 不是 add_month

怎么解决ora-00904: invalid identifier标识符无效 第4张

扩展阅读,以下内容您可能还感兴趣。

ORACLE 数据库报错 ORA-00904: "A2"."T3": invalid identifier

是我没看来懂还是什么,你的句子源里面好知像没A2啊 ,怎么提示ORA-00904: "A2"."T3": invalid identifier。道

MERGE INTO teb1@zzxxcc te1

USING (select t1 tt1, t2 tt2,t3 tt3 from tes1) te2

ON (te1.cl1 = te2.tt1 )

WHEN MATCHED THEN

UPDATE

SET

te1.cl2 = te2.tt2,

te1.cl3 = te2.tt3

WHEN NOT MATCHED THEN

INSERT

VALUES (te2.tt1 ,te2.tt2 ,te2.tt3 ) ;更多追问追答追问我就是这个意思。。这个A2 从哪里来的我也不知道。

我这个SQL 语句 就这么长。 我用TOAD ORACLE 10G

这个系统老 说A2。T3. 。。。我也没看见 A2在哪里。

但是 如果我把 USING (select t1 tt1, t2 tt2,t3 tt3 from tes1) te2 改成

USING (select t1 , t2 ,t3 from tes1) te2 这样

把字段的 别名 全部去掉 就不会出现问题。。追答MERGE INTO TEB1 TE1

USING (SELECT T1 TT1, T2 TT2, T3 TT3 FROM TEST1) TE2

ON (TE1.CL1 = TE2.TT1)

WHEN MATCHED THEN

UPDATE SET TE1.CL2 = TE2.TT2, TE1.CL3 = TE2.TT3

WHEN NOT MATCHED THEN

INSERT (TE1.CL1, TE1.CL2, TE1.CL3) VALUES (TE2.TT1, TE2.TT2, TE2.TT3);

这是我在PL/SQL验证通过的,跟你那个比起来也没什么差别

不过这表TE1是本地的,你可以试下本地建一个跟TE1完全一样的表试试看追问MERGE INTO TEB1 TE1 这么写我这里也没问题。

MERGE INTO teb1@zzxxcc te1 但是必须要DBLINK

因为我这里需要 跨数据库作业。

而且我这个SQL语句是从别人写好的SQL PROCEDURE 中 简化过来的。

正常的程序中的。

看样子 问题是出现在 跨数据库。和别名这部分了。追答建议你单独拿出来运行一下,不要在函数或者过程里面测试,那个A2太诡异了。追问恩。这个我就是单独拿出来自己写的。

没有写PROCEDURE

只写了MERGE 这部分。

呵呵。等有了答案 我这里贴出来 !

谢谢你了

java.sql.SQLSyntaxErrorException: ORA-00904: "PAGENOW1": 标识符无效

1、字段名或者表名百写错了,仔细检查核对一下,如果实在是没有发度现错的地方就有可能是第二种情况了

2、你的问字段包含了oracle的关键字,把报错的字段用双引号括起答来试试

应该是你这句"select * from (select a1.*,rownum rn from(select * from login)a1 where rownum<=pageSize*pageNow) where rn>=(pageNow-1)*pageSize+1"sql写错了内,你在检查下。你用sqldevelper拼写的时候有没有提容示什么错误吗?

希望能够帮到你

ORA-00904: : invalid identifier

看下是不是编码的问题

Caused by: java.sql.BatchUpdateException: ORA-00904: "TESTID": 标识符无效.

我前阵子也遇到了类似zhidao的问题。你可以去检查下你的数据库,是不是少了一些字段。或者对比一下字段是不是字符什么的打错了。

然后可以检查一回下, 是不是你的列里少了一个跟主键名字一样的字段。在数据库中,要有一列是与主键的名字相同的列才可以进行正确的识别。你的问题就是无法识别到有这个列,说明就是缺少这个列。那你就看看添加一个列,然后名字与主键答的相同。

数据库连接成功... java.sql.SQLException: ORA-00904: "SYS": invalid identifier at oracle.jdbc.driver

这是你SQL语句的问题,出现ORA-00904是数据库传过来的错误.你把你的SQL语句放到数据库里面查一下copy是一样的错,不是你代码的错误.应该是字段不存在或者字段值是字符类型的zd,你没有加上引号 ,

根据你回复一楼的.应该是那个字段是int类型的.而你却给它字符类型的追问这是建的表:USERID NUMBER,USERNAME VARCHAR2, PASSWORD VARCHAR2,给username插入abc查询就出错,插入123查询没问题。追答我说的是你插入语句问题 字段的值要用引号..如果是你用String拼起来的话,要记得拼上单引号..你调试的时候把SQL语句拷出来看一下.例如:

INSERT INTO 表(USERNAME) VALUES ( ' MYNAME ' )

用String拼的话要是 String SQL="INSERT INTO 表(USERNAME) VALUES ( ' "+ MYNAME +" ' );

如果你直接用 INSERT INTO 表(USERNAME) VALUES ( "+ MYNAME ")" 就会把MYNAME当作是数字类型插入,然后就报错了

参数比较多的话建议用占位符,这样比较不容易出现SQL错误..

  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/qwxdyd.html