"DZJC_SYS_PKG""GETSJHM": DZJC_SYS_PKG表中有GETSJHM这个字段?你确认你没写错名字?你把在控制台生成的sql语句拿到pl/sql里运行一下看看是否正确,很可能是你字符串拼接的时候名字写错误了 好好看看表名和字段名
另外 from dual";你把dual换成你表名 就是那个DZJC试试
我前阵子也遇到了类似的问题。你可以去检查下你的数据库,是不是少了一些字段。或者对比一下字段是不是字符什么的打错了。
然后可以检查一下, 是不是你的列里少了一个跟主键名字一样的字段。在数据库中,要有一列是与主键的名字相同的列才可以进行正确的识别。你的问题就是无法识别到有这个列,说明就是缺少这个列。那你就看看添加一个列,然后名字与主键的相同。
如果你一表包含一个lob类型的列如果存在一个与这个表同名的同义词那么在导入这个表的数据时会报ora-01403错:
在oracle10g中的测试情况如下:
1创建两个用户test和cs
idle> conn sys/zzh_2046@jy_1 as sysdba
已连接。
sys@JINGYONG> grant dba to test identified by test;
授权成功。
sys@JINGYONG> grant dba to cs identified by cs;
授权成功。
2在用户test中创建一个有clob类型的列的表emp并向表中插入几行记录
sys@JINGYONG> conn test/test@jy_1
已连接。
test@JINGYONG> create table emp (col_a number, col_b varchar2(3), c_lob clob);
表已创建。
test@JINGYONG>
test@JINGYONG> INSERT INTO EMP VALUES (180, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (181, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (182, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (183, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (184, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (185, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> commit;
提交完成。
连接到用户cs并创建一个同义词叫EMP
1创建同义词EMP是使用testemp表来创建(也可以用任意表来创建同义词EMP,只要保证同义词的名字与要导入表的名字相同就行)
test@JINGYONG> conn cs/cs@jy_1
已连接。
cs@JINGYONG> create synonym EMP for testEMP;
同义词已创建。
cs@JINGYONG> commit;
提交完成。
cs@JINGYONG>
C:\Documents and Settings\Administrator>exp test/test@jy_1 file=f:\empdmp table
s=EMP
Export: Release 102010 - Production on 星期四 12月 19 22:00:15 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
连接到: Oracle Database 10g Enterprise Edition Release 102010 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径
正在导出表 EMP导出了 6 行
成功终止导出, 没有出现警告。
C:\Documents and Settings\Administrator>imp cs/cs@jy_1 file=f:\empdmp tables=EM
P ignore=y
Import: Release 102010 - Production on 星期四 12月 19 22:01:48 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
连接到: Oracle Database 10g Enterprise Edition Release 102010 - Production
With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V100201 创建的导出文件
警告: 这些对象由 TEST 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
正在将 TEST 的对象导入到 CS
正在将 TEST 的对象导入到 CS
正在导入表 "EMP"
IMP-00058: 遇到 ORACLE 错误 1403
ORA-01403: no data found导入了 6 行
成功终止导入, 但出现警告。
2使用表t1来创建同义词EMP
cs@JINGYONG> create synonym EMP for syst1;
同义词已创建。
cs@JINGYONG> drop table emp;
drop table emp
第 1 行出现错误:
ORA-00942: 表或视图不存在
C:\Documents and Settings\Administrator>imp cs/cs@jy_201 file=f:\empdmp tables=
EMP ignore=y
Import: Release 102010 - Production on 星期五 12月 20 08:13:07 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
连接到: Oracle Database 11g Enterprise Edition Release 112010 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
经由常规路径由 EXPORT:V100201 创建的导出文件
警告: 这些对象由 TEST 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
正在将 TEST 的对象导入到 CS
正在将 TEST 的对象导入到 CS
正在导入表 "EMP"
IMP-00058: 遇到 ORACLE 错误 1403
ORA-01403: 未找到任何数据
IMP-00058: 遇到 ORACLE 错误 904
ORA-00904: "C_LOB": 标识符无效
成功终止导入, 但出现警告。
11g的测试
1创建两个用户test和cs
idle> conn sys/zzh_2046@jy_201 as sysdba
已连接。
sys@JINGYONG> grant dba to test identified by test;
授权成功。
sys@JINGYONG> grant dba to cs identified by cs;
2在用户test中创建一个有clob类型的列的表emp并向表中插入几行记录
sys@JINGYONG> conn test/test@jy_201
已连接。
test@JINGYONG> create table emp (col_a number, col_b varchar2(3), c_lob clob);
表已创建。
test@JINGYONG>
test@JINGYONG> INSERT INTO EMP VALUES (180, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (181, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (182, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (183, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (184, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> INSERT INTO EMP VALUES (185, 'a', '01010101010101');
已创建 1 行。
test@JINGYONG> commit;
提交完成。
连接到用户cs并创建一个同义词叫EMP
1创建同义词EMP是使用testemp表来创建(也可以用任意表来创建同义词EMP,只要保证同义词的名字与要导入表的名字相同就行)
test@JINGYONG> conn cs/cs@jy_201
已连接。
cs@JINGYONG> create synonym EMP for testEMP;
同义词已创建。
cs@JINGYONG> commit;
提交完成。
cs@JINGYONG>
使用10g的客户端连接到11g的数据库进行导出 *** 作
C:\Documents and Settings\Administrator>exp test/test@jy_201 file=f:\empdmp tab
les=EMP
Export: Release 102010 - Production on 星期四 12月 19 22:10:28 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
连接到: Oracle Database 11g Enterprise Edition Release 112010 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径
正在导出表 EMP导出了 6 行
成功终止导出, 没有出现警告。
使用10g的客户端连接到11g的数据库进行导入 *** 作也会报ora-01403错误
C:\Documents and Settings\Administrator>imp cs/cs@jy_201 file=f:\empdmp tables=
EMP ignore=y
Import: Release 102010 - Production on 星期四 12月 19 22:11:27 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
连接到: Oracle Database 11g Enterprise Edition Release 112010 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
经由常规路径由 EXPORT:V100201 创建的导出文件
警告: 这些对象由 TEST 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
正在将 TEST 的对象导入到 CS
正在将 TEST 的对象导入到 CS
正在导入表 "EMP"
IMP-00058: 遇到 ORACLE 错误 1403
ORA-01403: 未找到任何数据导入了 6 行
成功终止导入, 但出现警告。
使用11g的客户端连接到11g的数据库进行导出 *** 作
[oracle@jingyong ~]$ exp test/test file=/home/oracle/empdmp tables=EMP
Export: Release 112010 - Production on Sat Dec 7 01:41:44 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates All rights reserved
Connected to: Oracle Database 11g Enterprise Edition Release 112010 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path
exporting table EMP 12 rows exported
Export terminated successfully without warnings
使用11g的客户端连接到11g的数据库进行导出 *** 作在有与导入表同名的同义词的情况下不会报ora-01403错误
[oracle@jingyong ~]$ imp cs/cs file=/home/oracle/empdmp tables=EMP ignore=y
Import: Release 112010 - Production on Sat Dec 7 01:42:20 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates All rights reserved
Connected to: Oracle Database 11g Enterprise Edition Release 112010 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V110200 via conventional path
Warning: the objects were exported by TEST, not by you
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
importing TEST's objects into CS
importing TEST's objects into CS
importing table "EMP" 12 rows imported
Import terminated successfully without warnings
[oracle@jingyong ~]$
下面删除与表同名的同义词而且使用10g的客户端连接11g数据库进行导入 *** 作也是不会报ora-01403错误的
C:\Documents and Settings\Administrator>sqlplus /nolog
SQLPlus: Release 102010 - Production on 星期五 12月 20 07:51:34 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
idle> conn cs/cs@jy_1
已连接。
cs@JINGYONG> drop synonym EMP;
同义词已删除。
C:\Documents and Settings\Administrator>imp cs/cs@jy_201 file=f:\empdmp tables=
EMP ignore=y
Import: Release 102010 - Production on 星期五 12月 20 09:02:40 2013
Copyright (c) 1982, 2005, Oracle All rights reserved
连接到: Oracle Database 11g Enterprise Edition Release 112010 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
经由常规路径由 EXPORT:V100201 创建的导出文件
警告: 这些对象由 TEST 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
正在将 TEST 的对象导入到 CS
正在将 TEST 的对象导入到 CS
正在导入表 "EMP"导入了 6 行
成功终止导入, 没有出现警告。
出现这个问题的原因:
是因为bug 7422758 IMPORTING A TABLE WITH A BLOB OR CLOB USING A SYNONYM CAUSES ORA-1403, fixed with 112
解决方法:
1 升级到112
2 打7422758补钉
注意:
在oracle11gr2版本中如果在对某个用户导入某个表时,而这个表有一个lob类型的列且这个用户存一个与要导入表同名的同义词,在这种情况下使用oracle11gr2版本的客户端进行导出再导入是不会报ora-01403错误如果使用oracle11gr2版本以下的客户端进行导出和导入也是会报ora-01403错误的
来自 “ ITPUB博客 ” ,链接:>
从字面看是表student_course里面没有这个score字段,你先去数据库里面确认下是不是真没有。
然后这个语句的写法有点奇怪,你给了表别名,为啥在查询中不用?
改成这样子试下:
select ststudent_id,ststudent_name,scscore
from student st,student_course sc
where ststudent_id=scstudent_id and sccourse_id='0001' order by scscore desc;
以上就是关于JAVA访问oracle数据库时出错全部的内容,包括:JAVA访问oracle数据库时出错、Caused by: java.sql.BatchUpdateException: ORA-00904: "TESTID": 标识符无效.、数据库中导入一个同名有数据的表,会有问题吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)