Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O usuário do esquema Oracle não pode criar tabela no procedimento


A resposta para sua pergunta imediata é que você obtém ORA-01031: insufficient privileges porque seu usuário tem o privilégio CREATE TABLE concedido por meio de uma função:o modelo de segurança do Oracle impõe uma regra de que não podemos usar privilégios concedidos por meio de funções em PL/SQL. Portanto, você precisa que seu DBA conceda o privilégio CREATE TABLE diretamente ao seu usuário.

Ou você?

Porque o que você está tentando fazer não faz sentido no Oracle. No Oracle, as tabelas temporárias globais são permanentes estruturas; são apenas os dados neles que são temporários. Portanto, a solução correta é construir a tabela uma vez com um script DDL normal, como qualquer outro objeto de banco de dados. Então você pode simplesmente inserir na tabela temporária global conforme necessário.

Você não é a primeira pessoa neste site a cometer esse erro (leia este tópico pertinente). Muitas vezes, é porque as pessoas vêm de outro banco de dados, como o SQL Server, que possui uma construção chamada "tabela temporária", que na verdade é diferente das tabelas temporárias globais da Oracle. Se esse for o seu cenário, você estará interessado em um novo recurso do Oracle 18c chamado Tabelas temporárias privadas. Elas são exatamente análogas às tabelas temporárias do SQL Server. Descubra mais.