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

1 に答える 1

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 

識別子に小文字を使用する本当にやむを得ない理由がない限り、小文字を使用しないことをお勧めします。ご覧のとおり、これらは混乱の主な原因です。

于 2012-07-22T17:50:40.353 に答える