Utilizar update dentro da view ORACLE DB

Bom dia, estou tendo um problema ao executar o update dentro de uma view utilizando condições passadas pelo usuario.

Explicando melhor eu gostaria que o usuario pudesse escolher se ele vai executar uma parte da instrução da view, exemplo:

if opcao = 1
{
CREATE VIEW clerk AS
SELECT employee_id, last_name, department_id, job_id
FROM employees
WHERE job_id = ‘PU_CLERK’
}
else
UPDATE clerk SET job_id = ‘PU_MAN’ WHERE employee_id = 118;

algo ± assim, nao sei se consegui me expressar

Como o próprio nome diz, VIEW é para ver apenas. Não funciona com Update.

Você tem que fazer o update diretamente na tabela.

Na verdade, o Oracle permite que views sejam atualizaveis.
Você pode querer isso por questões de segurança, facilitar API, enfim, diversos.

Aqui tem um link falando sobre isso:
http://docs.oracle.com/cd/E17952_01/refman-5.1-en/view-updatability.html

Pesquise por “Updatable Views”.

Na verdade, o Oracle permite que views sejam atualizaveis.
Você pode querer isso por questões de segurança, facilitar API, enfim, diversos.

Aqui tem um link falando sobre isso:
http://docs.oracle.com/cd/E17952_01/refman-5.1-en/view-updatability.html

Pesquise por “Updatable Views”.

[/quote]Uia! Sabia não! Legal.
Na minha época de mexer diretamente com view isso não era possível. Como as coisas mudam! O.o

Não sei seria uma boa prática usar, para falar a verdade.
Hoje em dia provavelmente não criaria essa camada no banco.

Mas é sempre bom ter o recurso na manga para casos especiais.

Sobre o problema do tópico:

  • Que problemas você está tendo exatamente? Dá erro? Alguma mensagem?

  • Por que está recriando a view nessa opção 1?

Não sei seria uma boa prática usar, para falar a verdade.
Hoje em dia provavelmente não criaria essa camada no banco.

Mas é sempre bom ter o recurso na manga para casos especiais.[/quote]Uhum.
Eu olhei lá e existem também diversas restrições para uma view aceitar update. Deve ser por isso que nunca consegui. :lol: :lol:

Minhas views sempre tinham valores agregados! >_<’’

Lembro que quando a Oracle incorporou esta feature no BD deles, serviu mais para aquelas ferramentas de geração de código deles (Oracle Designer) pudessem criar as telas de CRUD de maneira mais simples. Mas não funcionava para views de negócio (aquelas com vários joins e condições). O jeito era mudar o código gerado (que dava um trabalho desgraçado para entender). Eu particularmente também não recomendo fazer update em view. Se alguém mudar a view pode fazer seu código deixar de funcionar.

Não sei seria uma boa prática usar, para falar a verdade.
Hoje em dia provavelmente não criaria essa camada no banco.

Mas é sempre bom ter o recurso na manga para casos especiais.[/quote]Uhum.
Eu olhei lá e existem também diversas restrições para uma view aceitar update. Deve ser por isso que nunca consegui. :lol: :lol:

Minhas views sempre tinham valores agregados! >_<’’[/quote]

AbelBueno, na verdade estou meio perdido em como realizar a operacao, olhando na documentacao da oracle http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_8004.htm

eu vi essa parte em que ele mostra o que é editavel dentro da view, no meu caso eu gostaria que o usuario lesse a view utilizando um select e depois com a mesma view rodasse um update, mas ai nao sei se seria o caso de usar um case depois do AS da view ou if else mesmo…