标签: ora-00942

如何通过Oracle廉价验证另一个模式中表中列的存在?

环境是Oracle 9和10.我没有DBA级别的访问权限.

问题是在另一个模式中验证特定表中是否存在特定列.

有两种情况需要处理.

  1. 同一实例中的另一个模式
  2. 使用db_link在不同实例中的模式

鉴于我的模式FRED和另一个模式BARNEY,我试过这样的事情

SELECT 1
FROM BARNEY.USER_TAB_COLS
WHERE TABLE_NAME = 'SOME_TABLE' 
  AND COLUMN_NAME = 'SOME_SPECIFIC_COLUMN'
Run Code Online (Sandbox Code Playgroud)

产生了[1] :(错误):ORA-00942:表或视图不存在

在这一段时间过后,我意识到USER_TAB_COLS,实际上不是一个表.这是一种观点.我一直在从表中选择,但不是从视图中选择.

我用db_link尝试了同样的事情,并惊讶地看到数据回来了.db_link中有一个嵌入式schema_name /密码,所以我觉得它有用,因为它有效地登录到另一个模式,这应该使视图可以访问.

谷歌搜索了我的眼球,并在Oracle医生的山上磨了我的眼球,我正在寻找有人指出我正确的方向,或者至少指出我错过了什么.

有哪些技术可用于从同一实例中的模式获取与用户表相关的元数据,以验证特定列是否存在?

提前致谢.

邪恶.

+1为好的答案.谢谢.

sql oracle database-link ora-00942

1
推荐指数
1
解决办法
897
查看次数

无法删除刚刚创建的表

我创建了一个名为的表dual2.我在那里有一行,可以从中选择.尝试删除它时,会产生此错误:

第1行的错误:
ORA-00604:递归SQL级别1发生错误
ORA-00942:表或视图不存在

但是,表仍然存在!它从dba_tables和返回user_tables.

关于这里发生了什么的任何想法?

alt text http://img180.imageshack.us/img180/6012/28140463.png

这是我用plsql开发人员创建的表创建脚本:

-- Create table
create table
(
  DUMMY VARCHAR2(1)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
Run Code Online (Sandbox Code Playgroud)

PS:p.cambell感谢您的编辑!抱歉我的英语不好:)

sql oracle plsql ora-00942

1
推荐指数
1
解决办法
2725
查看次数

动态 SQL/异常处理 -00942 - Oracle PL/SQL

最初我试图创建一个异常来捕获一个不存在的表 (-00942)。根据 Alex 和 Raj 的反馈,我修改了代码以使用 EXECUTE IMMEDIATE。这有助于识别表,但是当我将表从“员工”更正为“员工”时,这是我数据库中存在的表,我本来希望代码运行时不会出错,就像我没有使用 EXECUTE IMMEDIATE 一样.

使用 EXECUTE IMMEDIATE 时,代码是否可以无异常地运行,而不是生成 catch all 异常?

EXECUTE IMMEDIATE 'SELECT last_name INTO v_name FROM Employees WHEREsalary = v_sal';

WHEN OTHERS THEN :g_message := '发生了其他一些错误。';

我希望代码能够无一例外地运行。

VARIABLE g_message VARCHAR2(250)

DEFINE p_sal = 12000

DECLARE 
   v_name employees.last_name%TYPE;
   v_sal employees.salary%TYPE := &p_sal;

   table_does_not_exist exception;  
   PRAGMA EXCEPTION_INIT(table_does_not_exist, -942);

BEGIN

   EXECUTE IMMEDIATE
   'SELECT last_name INTO v_name FROM employees WHERE salary = v_sal';

   DBMS_OUTPUT.put_line(v_name);


 EXCEPTION 

   WHEN table_does_not_exist then 
   :g_message := 'table dose not exist';  


   WHEN …
Run Code Online (Sandbox Code Playgroud)

plsql exception-handling dynamic-sql ora-00942 oracle-sqldeveloper

1
推荐指数
1
解决办法
5762
查看次数

LEFT JOIN多个表错误!(表或视图不存在)

我有以下SQL语法:

  SELECT firmenstamm.firmen_id,   
     firmenstamm.firmenname_1,   
     kreditorenstamm.kreditorenname_1,   
     debitor.debitoren_id,   
     debitor.deb_id_vom_kreditor,   
     debitorenstamm.debitorenname_1,   
     zahlung.zahlung_nr,   
     zahlung.zahlung_betrag,   
     zahlung.zahlung_betrag_offen,   
     zahlung.zahlung_datum,   
     kreditorenstamm.kreditoren_id,   
     bankbewegung.name_ag,   
     bankbewegung.verwendungzweck  
FROM debitor,   
     debitorenstamm,   
     firmenstamm,   
     kreditorenstamm,   
     zahlung 
     LEFT JOIN z_bankbewegung ON zahlung.zahlungs_id =   z_bankbewegung.zahlungs_id,
     LEFT JOIN bankbewegung ON z_bankbewegung.babe_id = bankbewegung.babe_id

 WHERE ( firmenstamm.firmen_id = kreditorenstamm.firmen_id ) and  
         ( kreditorenstamm.kreditoren_id = debitor.kreditoren_id ) and  
         ( debitor.debitoren_id = debitorenstamm.debitoren_id ) and  
         ( debitor.kreditoren_id = zahlung.kreditoren_id ) and  
         ( debitor.deb_id_vom_kreditor = zahlung.deb_id_vom_kreditor ) and  
         ( ( zahlung.zahlung_betrag_offen > 0 ) )   
Run Code Online (Sandbox Code Playgroud)

我的问题现在如下:你可以看到我在同一个表上进行了多次左连接.我总是收到错误消息"表或视图不存在"(ORA-00942).

zahlung 
LEFT JOIN z_bankbewegung ON zahlung.zahlungs_id …
Run Code Online (Sandbox Code Playgroud)

sql oracle join ora-00942

1
推荐指数
1
解决办法
390
查看次数

具有多个连接的Oracle视图只能在使用引号时识别 - 为什么?

我在Oracle视图上执行sql查询时遇到了一个奇怪的行为.该视图包含多个连接.当我键入常规sql时:

select * from vView - I receive the error that view is not found
select * from "vView" - The query is executed. 
Run Code Online (Sandbox Code Playgroud)

我想知道为什么?

下面是我的sql:

 CREATE OR REPLACE FORCE VIEW "TMSCODE"."vCountEventsData" ("EV_ID_NUMBER", "SI_ID", "EV_YEAR", "EV_INS_DATE", "EV_REM_DATE", "EV_AADT_TOT", "EV_AADT_DIR1", "EV_AADT_DIR2", "EV_REPORT", "DIRECTION", "CNAME", "STATION_DESC") AS 
SELECT
"TMSCODE"."STC_EVENTS".EV_ID_NUMBER,
"TMSCODE"."STC_EVENTS".SI_ID,
"TMSCODE"."STC_EVENTS".EV_YEAR,
"TMSCODE"."STC_EVENTS".EV_INS_DATE,
"TMSCODE"."STC_EVENTS".EV_REM_DATE,
"TMSCODE"."STC_EVENTS".EV_AADT_TOT,
"TMSCODE"."STC_EVENTS".EV_AADT_DIR1,
"TMSCODE"."STC_EVENTS".EV_AADT_DIR2,
"TMSCODE"."STC_EVENTS".EV_REPORT,
"TMSCODE"."D_DIRECTION".DIRECTION,
"TMSCODE"."D_CONSULTANT".CNAME,
"TMSCODE"."D_STATION_TYPE".STATION_DESC
FROM
"TMSCODE"."STC_EVENTS"
INNER JOIN "TMSCODE"."D_DIRECTION" ON ("TMSCODE"."STC_EVENTS".EV_DIR = "TMSCODE"."D_DIRECTION".ID)
INNER JOIN "TMSCODE"."D_CONSULTANT" ON ("TMSCODE"."STC_EVENTS".EV_CONS = "TMSCODE"."D_CONSULTANT".ID)
INNER JOIN "TMSCODE"."D_STATION_TYPE" ON ("TMSCODE"."STC_EVENTS".EV_STATION_TYPE = …
Run Code Online (Sandbox Code Playgroud)

sql oracle view ora-00942

0
推荐指数
1
解决办法
1199
查看次数

ORA-00942:表或视图不存在

我从java传递一个select查询,它适用于所有表,但其中一个表得到一个错误"ora-00942表或视图不存在".我检查了授权和所有,它对所有表都一样.但由于某种原因,它抱怨这个特定的表格.但是,如果我在sql中运行相同的查询,它完全正常.有人能告诉我背后的原因可能是什么.谢谢

java sql oracle ora-00942

0
推荐指数
1
解决办法
1891
查看次数