2012-07-22 24 views
0

我得到这个甲骨文视场:不能选择一个视图

CREATE OR REPLACE VIEW "VALIDA_CADVEN_VIEW" ("SETOR_INI", "NOME_REP_INI", "RE_REP_INI", "TARGET_REP_INI", "SETOR_FIM", "NOME_REP_FIM", 
               "RE_REP_FIM", "TARGET_REP_FIM", "Situacao", "Causa") AS 
SELECT I.SETOR, I.NOME_REP, I.RE_REP, I.TARGET_REP, 
     F.SETOR, F.NOME_REP, F.RE_REP, F.TARGET_REP, 'Não existe no arquivo atual' Situacao, 'Arquivo' Causa 
FROM ZCADVEN_INI I 
LEFT JOIN (SELECT * FROM ZCADVEN_FIM WHERE RE_REP IS NOT NULL) f 
ON I.RE_REP = F.RE_REP 
WHERE F.RE_REP IS NULL 
AND I.RE_REP IS NOT NULL 

UNION 

SELECT I.SETOR, I.NOME_REP, I.RE_REP, I.TARGET_REP, 
     F.SETOR, F.NOME_REP, F.RE_REP, F.TARGET_REP, 'Não existe no arquivo anterior' Situacao, 'Arquivo' Causa 
FROM ZCADVEN_FIM F 
LEFT JOIN (SELECT * FROM ZCADVEN_INI WHERE RE_REP IS NOT NULL) I 
ON I.RE_REP = F.RE_REP 
WHERE I.RE_REP IS NULL 
AND F.RE_REP IS NOT NULL 

UNION 

SELECT I.SETOR, I.NOME_REP, I.RE_REP, I.TARGET_REP, 
     F.SETOR, F.NOME_REP, F.RE_REP, F.TARGET_REP, 'Há divergências' Situacao, 'Target' Causa 
FROM ZCADVEN_FIM F 
INNER JOIN (SELECT * FROM ZCADVEN_INI WHERE RE_REP IS NOT NULL) I 
ON I.RE_REP = F.RE_REP 
WHERE I.TARGET_REP <> F.TARGET_REP 

UNION 


SELECT I.SETOR, I.NOME_REP, I.RE_REP, I.TARGET_REP, 
     F.SETOR, F.NOME_REP, F.RE_REP, F.TARGET_REP, 'Há divergências' SITUACAO, 'Nome' CAUSA 
FROM ZCADVEN_FIM F 
INNER JOIN (SELECT * FROM ZCADVEN_INI WHERE RE_REP IS NOT NULL) I 
ON I.RE_REP = F.RE_REP 
WHERE I.NOME_REP <> F.NOME_REP 

UNION 

SELECT I.SETOR, I.NOME_REP, I.RE_REP, I.TARGET_REP, 
     F.SETOR, F.NOME_REP, F.RE_REP, F.TARGET_REP, 'Há divergências' Situacao, 'Setor' Causa 
FROM ZCADVEN_FIM F 
INNER JOIN (SELECT * FROM ZCADVEN_INI WHERE RE_REP IS NOT NULL) I 
ON I.RE_REP = F.RE_REP 
WHERE I.SETOR <> F.SETOR 

UNION 

SELECT I.SETOR, I.NOME_REP, I.RE_REP, I.TARGET_REP, 
     F.SETOR, F.NOME_REP, F.RE_REP, F.TARGET_REP, 'OK' Situacao, '-' Causa 
FROM ZCADVEN_FIM F 
INNER JOIN ZCADVEN_INI I 
ON I.RE_REP = F.RE_REP 
AND I.SETOR = F.SETOR 
AND I.NOME_REP = F.NOME_REP 
AND I.TARGET_REP = F.TARGET_REP 

现在,在某一时刻,我需要做这个简单的SELECT

SELECT CAUSA FROM VALIDA_CADVEN_VIEW 

而且我得到这个错误:

ORA-00904: "CAUSA": "%s: invalid identifier" 

我在做什么错?

谢谢。

回答

4

由于您在双引号中用“Causa”创建了视图,因此情况非常重要。你将不得不这样做:

SELECT "Causa" FROM valida_cadven_view; 

我建议你用大写标识符重新创建你的看法。要么离开双引号关闭或使标识大写:

CREATE OR REPLACE VIEW VALIDA_CADVEN_VIEW 
    (SETOR_INI, NOME_REP_INI, RE_REP_INI, TARGET_REP_INI, SETOR_FIM 
    , NOME_REP_FIM, RE_REP_FIM, TARGET_REP_FIM, Situacao, Causa) AS 

CREATE OR REPLACE VIEW "VALIDA_CADVEN_VIEW" 
    ("SETOR_INI", "NOME_REP_INI", "RE_REP_INI", "TARGET_REP_INI", "SETOR_FIM" 
    , "NOME_REP_FIM", "RE_REP_FIM", "TARGET_REP_FIM", "SITUACAO", "CAUSA") AS 

除非你有一个非常令人信服的理由在你的标识符使用小写字母,我建议不使用它们。正如你所看到的,它们是混淆的主要来源。

+0

好的和明确的答案,谢谢(: – gabsferreira 2012-07-22 17:58:04

相关问题