ORA-00942错误:创建高校4张表时2张无法正常创建与插入
排查Oracle ORA-00942(表或视图不存在)错误的常见原因
先确认表是否真的创建成功
直接执行以下SQL,检查这两张表是否在当前用户的表列表里:SELECT table_name FROM user_tables WHERE table_name IN ('GHC_FACULTY', 'GHC_EXPERTISE');要是你建表时用了双引号包裹小写表名(比如
CREATE TABLE "ghc_faculty"),就得用小写查询:SELECT table_name FROM user_tables WHERE table_name IN ('ghc_faculty', 'ghc_expertise');如果查不到结果,说明这两张表根本没建起来——回头看建表的执行日志,大概率是有语法错误、当前用户没
CREATE TABLE权限,或者存储空间不够导致创建失败。检查当前用户的操作权限
就算表存在,当前用户也可能没权限访问。查一下:SELECT privilege FROM user_tab_privs WHERE table_name IN ('GHC_FACULTY', 'GHC_EXPERTISE') AND grantee = USER;要是没有
SELECT/INSERT/DELETE这些权限,找表的所有者给你授权:GRANT SELECT, INSERT, DELETE ON ghc_faculty TO 你的用户名; GRANT SELECT, INSERT, DELETE ON ghc_expertise TO 你的用户名;注意表名的大小写坑
Oracle默认会把无引号的表名转成大写。要是你建表时加了双引号用小写(比如"ghc_faculty"),那后续所有操作都必须带双引号,不然Oracle会去找大写的GHC_FACULTY,自然报不存在。比如插入语句得写成:INSERT INTO "ghc_faculty" (...) VALUES (...);排查同义词/视图冲突
看看有没有同名的同义词指向了不存在的对象:SELECT synonym_name, table_owner, table_name FROM user_synonyms WHERE synonym_name IN ('GHC_FACULTY', 'GHC_EXPERTISE');要是有这种情况,要么删了同义词,要么把同义词指向正确的表。
确认操作的schema是否正确
要是这两张表不在你当前使用的schema里,操作时必须带上schema前缀,比如:SELECT * FROM 表所在的schema名.ghc_faculty;嫌麻烦的话也可以建个同义词。
内容的提问来源于stack exchange,提问作者CC298
相关产品推荐
相关产品推荐

