View parametrizada

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
mbfilho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qui, 26 Jan 2006 10:46 am
Localização: Aracaju-SE

Olá,

estou iniciando no Oracle, e gostaria de saber como posso gerar uma VIEW PARAMETRIZADA?

Agradeço desde já,
Marcos Bastos
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Olá mbfilho

Não é possível colocar parâmetros numa VIEW. (pelo menos, não como se faz com cursores ou funções).

O que você pode fazer é o seguinte: Coloque os valores em um lugar público do banco. (por exemplo, uma tabela de parâmetros)... Daí, a view consulta essa tabela e você consegue recuperar o parâmetro desejado.

Outra forma é usar as "variáveis globais" do SQL que são os CONTEXTOS.
Aí vai um exemplo:

Selecionar tudo

system@O8IR3:SQL>create or replace context my_ctx USING
2 my_procedure;

Contexto criado.

system@O8IR3:SQL>create or replace procedure my_procedure(
2 p_name in varchar2, p_value in number)
3 as
4 begin
5 dbms_session.set_context( 'my_ctx', p_name, p_value );
6 end;
7 /

Procedimento criado.

system@O8IR3:SQL>grant execute on MY_PROCEDURE to scott;

Operação de Grant bem-sucedida.

scott@O8IR3:SQL>create or replace view V_TESTE as
2 select deptno, dname from dept where deptno > sys_context(
'my_ctx', 'deptno')
3 UNION ALL
4 select deptno, dname from dept where deptno < sys_context(
'my_ctx', 'deptno')
5 ;

View criada.

scott@O8IR3:SQL>exec system.MY_PROCEDURE('deptno', 30);

Procedimento PL/SQL concluído com sucesso.

scott@O8IR3:SQL>select * from V_TESTE;

DEPTNO DNAME
------------------ --------------
40 OPERATIONS
10 ACCOUNTING
20 RESEARCH

scott@O8IR3:SQL>

:-o
sp66d_rac6r
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 02 Dez 2008 10:43 am
Localização: Sorocaba-SP

O que fazer quando não se tem privilégios de SYSTEM?

Agradeço desde já.
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:

mbfilho, ao invés de criar uma tabela para filtrar a view, você também pode criar apenas uma package specification com uma variavel, como no exemplo do link abaixo:

http://www.programadoras.com.br/?p=241

Att,

Fábio Prado
www.fabioprado.net
Responder
  • Informação
  • Quem está online

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