1
resposta

Criar uma VIEW Oracle que usa parâmetro no WHERE da Subquery da VIEW

Saudações a todos,

Como posso criar uma VIEW no ORACLE que usa um parâmetro na cláusula WHERE da SUBQUERY.

Exemplo:

CREATE OR REPLACE VIEW minha_view
AS
SELECT 
    CD_TURMA CODIGO, 
    DS_TURMA TURMA,
    SN_ATIVO ATIVO
FROM TURMA
WHERE sn_ativo = **parametro**;

Desejo passar o parametro quando for executar a VIEW

1 resposta

Oii Ricardo, tudo bem por aí?

Uma forma de fazer isso é criando uma função para receber o parâmetro no filtro da view.

Crie uma função que recebe o parâmetro e retorna a subquery com o WHERE desejado. Por exemplo:

CREATE OR REPLACE FUNCTION minha_funcao(p_sn_ativo IN VARCHAR2)
RETURN VARCHAR2
IS
    v_subquery VARCHAR2(1000);
BEGIN
    v_subquery := 'SELECT CD_TURMA CODIGO, DS_TURMA TURMA, SN_ATIVO ATIVO
                   FROM TURMA
                   WHERE sn_ativo = ' || p_sn_ativo;
    
    RETURN v_subquery;
END;

Em seguida, crie a VIEW utilizando a função criada anteriormente. Por exemplo:

CREATE OR REPLACE VIEW minha_view
AS
SELECT 
    CD_TURMA CODIGO, 
    DS_TURMA TURMA,
    SN_ATIVO ATIVO
FROM TURMA
WHERE sn_ativo = (SELECT minha_funcao('parametro') FROM DUAL);

Espero que esse seja um bom ponto de partida! Como é um caso com algumas particularidades, é necessário que você faça seus testes e adeque o código da forma que melhor funcione para seu objetivo.

Abraços.