Tenho um forms onde utilizo o código abaixo para montar informações dinâmicas para o menu da aplicação.
--------------------------------------------------------
USUARIO := :global.menu_usuario;
SISTEMA := ASPAS||:global.menu_sistema||ASPAS;
--
rg_id := Find_Group( rg_name );
--
IF not Id_Null(rg_id) THEN
Delete_Group( rg_name );
END IF;
--
query := 'SELECT INITCAP(d.ds_modulo) descricao, '||
' d.cd_modulo modulo '||
' FROM t_sist_mod_func a, '||
' t_sistema_modulo c, '||
' t_modulo d '||
' WHERE a.cd_sistema = c.cd_sistema '||
' AND a.cd_modulo = c.cd_modulo '||
' AND c.cd_modulo = d.cd_modulo '||
' AND c.cd_modulo_relacionado = '||to_char(vBloco)||
' AND a.cd_empresa = '||:global.menu_empresa||
' AND c.cd_sistema = '|| SISTEMA ||' '||
' AND a.cd_funcionario = '|| USUARIO ||' '||
' ORDER BY to_number(c.seq_modulo)';
--
rg_id := Create_Group_From_Query( rg_name, query);
-------------------------------
-- Populate the record group --
-------------------------------
errcode := Populate_Group( rg_id );
if (errcode <> 0) then
delete_group ( rg_id );
end if;
Esta prática gera um código onde o select é executado com literais e não bind variable.
Gostaria de saber se alguém tem alguma sugestão para otimizar meu acesso ao banco ?
Observação:
Banco Oracle 10g e Oracle Forms 6i
Grato.