WITH <TABLE> AS Sintaxe

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Estou tentando criar uma view da seguinte forma:

Selecionar tudo

CREATE OR REPLACE VIEW TESTE AS
WITH XTAB AS
       (SELECT 1 AS COD,
               'TESTE' AS DESCR
          FROM DUAL)
SELECT COD, DESCR FROM XTAB;
A view é criada, porém não retorna nenhum registro. Estou errando na sintaxe?
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara a criação ta tranquila.

acho q tu ta errando no select q faz dpoiz.

Veirifique se ao buscar os registros da view você não esta tentando buscar algo tipo

Selecionar tudo

SELECT COD, DESCR FROM XTAB; 
isso não funcionará. Você deve buscar através do nome da view:

Selecionar tudo

SELECT COD, DESCR FROM TESTE; 
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Obrigado Sérgio, mas não era esse o problema.

Selecionar tudo

WITH XTAB AS
       (SELECT 1 AS COD,
               'TESTE' AS DESCR
          FROM DUAL)
SELECT COD, DESCR FROM XTAB;
É estranho, se eu executar essa query diretamente no PL/SQL Developer, não apresenta erro, mas não retorna nenhum registro. Já se criar uma view com essa query funciona. Não entendi o que acontece.

Mas enfim, obrigado assim mesmo.
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Bom cara, agora não entendi mais o que está acontecendo.

Primeiro você falou que a view não retornava mais nada, agora flou q ta bombando quando é criada a view.

Afinal, tu resolveu o problema? Se não especifica melhor aí.
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Essa sql funciona na view, fora dela não. Estava testando a query fora da view, por isso achei que por consequência a view baseada nela também não funcionaria. A view está funcionando sem problemas.

Alguém sabe o motivo disso?
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:

Para quem quiser entender melhor como funciona cláusula WITH:

http://www.fabioprado.net/2010/10/claus ... eries.html


[]s

Fábio Prado
fneto
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 18 Mar 2011 7:01 pm
Localização: SP
fneto

Selecionar tudo

WITH XTAB AS
       (SELECT 1 AS COD,
               'TESTE' AS DESCR
          FROM DUAL)
SELECT COD, DESCR FROM XTAB;
Executei essa query fora da view no SQL*PLUS e houve o retorno foi igual ao de dentro da VIEW.

Isso ta acontecendo só no PL/SQL Developer.
Execute as duas queries no SQL*PLUS e vai dar certo (executei na versão 10.2)

Ta parecendo um pequeno BUG no PL/SQL Developer, tente atualiza-lo pra ver se continua.

Um abraço!


Fernando Neto
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:

Eu já tive problemas parecidos com visões que não retornavam os dados esperados, e que se tratavam de um bug do Oracle. No metalink achei indicações como resolvê-los configurando o parâmetro de inicialização EVENT. Veja se no Metalink você encontra a solução para o seu problema.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes