View parametrizada

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qui, 26 Jan 2006 10:52 am

Olá,

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

Agradeço desde já,
Marcos Bastos
mbfilho
Localização: Aracaju-SE

Mensagemem Qui, 26 Jan 2006 2:40 pm

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:
Código: Selecionar todos
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
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Qui, 30 Jun 2011 10:16 am

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

Agradeço desde já.
sp66d_rac6r
Localização: Sorocaba-SP

Mensagemem Seg, 15 Ago 2011 5:00 pm

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
fbifabio
Localização: São Paulo - SP


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


      Voltar para SQL

      Quem está online

      Usuários navegando neste fórum: Google [Bot] e 1 visitante