sql >> Databáze >  >> RDS >> Oracle

Uživatel schématu Oracle nemůže vytvořit tabulku v proceduře

Odpověď na vaši bezprostřední otázku je, že dostáváte ORA-01031: insufficient privileges protože váš uživatel má oprávnění CREATE TABLE udělené prostřednictvím role:model zabezpečení Oracle vynucuje pravidlo, že nemůžeme používat oprávnění udělená prostřednictvím rolí v PL/SQL. Takže potřebujete, aby váš DBA udělil oprávnění CREATE TABLE vašemu uživateli přímo.

Nebo vy?

Protože to, o co se snažíte, nedává v Oracle smysl. V Oracle jsou globální dočasné tabulky trvalé struktury; jsou to jen data v nich, která jsou dočasná. Správným řešením je tedy vytvořit tabulku jednou pomocí normálního skriptu DDL, jako jakýkoli jiný databázový objekt. Poté můžete pouze vložit do globální dočasné tabulky, jak potřebujete.

Nejste první, kdo na tomto webu udělal tuto chybu (přečtěte si toto příslušné vlákno). Často je to proto, že lidé přicházejí z jiné databáze, jako je SQL Server, který má konstrukci zvanou „dočasná tabulka“, která se ve skutečnosti liší od globálních dočasných tabulek Oracle. Pokud je to váš scénář, pak vás bude zajímat nová funkce Oracle 18c nazvaná Private Temporary Tables. Jsou přesně analogické dočasným tabulkám SQL Serveru. Zjistěte více.




  1. SQL Server 2005 ROW_NUMBER() bez ORDER BY

  2. Nastavení Django a PostgreSQL na dvou různých instancích EC2

  3. Podporuje SQLDeveloper spouštění skriptů?

  4. Zabránění vkládání SQL v Node.js