Reputation: 3137
I got this Oracle 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
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
Now, in certain point I need to do this simple SELECT
:
SELECT CAUSA FROM VALIDA_CADVEN_VIEW
And I get this error:
ORA-00904: "CAUSA": "%s: invalid identifier"
Any ideas of what I'm doing wrong?
Thank you.
Upvotes: 0
Views: 41
Reputation: 43533
Since you created the view with "Causa" in double quotes, case is significant. You will have to do this:
SELECT "Causa" FROM valida_cadven_view;
I would recommend you re-create your view with upper case identifiers. Either leave the double quotes off or make the identifier upper case:
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
or
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
Unless you have a really compelling reason to use lower case in your identifiers, I'd recommend not using them. They are a major source of confusion, as you can see.
Upvotes: 4