Pular para o conteúdo

Fóruns SQL e PL/SQL Criar Tabela Temporaria dentro de Procedure Criar Tabela Temporaria dentro de Procedure

#98031
fsitja
Participante

    Imagino que provavelmente ele está executando execute immediate e tendo um erro (embora não tenha postado o código do erro).

    Sendo esse o caso, o problema ocorre devido ao fato de stored procedures executarem por padrão com definer’s rights, ou seja, com os privilégios com dono da procedure. Esses privilégios precisam ser atribuídos por grant direto, e não por role.

    Outra alternativa técnica seria definir a procedure como invoker’s rights e delegar ao usuário que executa a procedure os privilégios necessários.

    Entretanto, esse tipo de solução não é uma boa prática. O ideal é evitar, mas se for realmente necessário, use Global Temporary Tables:
    http://download.oracle.com/docs/cd/E118 … ADMIN11633

    O melhor seria avaliar se a tal tabela temporária é realmente necessária ou está sendo criada por conveniência.

    Tem uma analogia muito boa que se aplica aqui:

    Programar é como construir uma casa, por isso muitas vezes há a figura do arquiteto de sistemas.

    Na sua casa ou residência você constrói uma privada cada vez que quer usar o banheiro? Creio que não.

    Da mesma forma, componentes estruturais de um sistema não devem ser construídos em tempo de execução.