sql >> Database >  >> RDS >> Oracle

Oracle-schemagebruiker kan geen tabel maken in procedure

Het antwoord op je directe vraag is dat je ORA-01031: insufficient privileges . krijgt omdat uw gebruiker het privilege CREATE TABLE heeft dat via een rol is verleend:het Oracle-beveiligingsmodel dwingt een regel af dat we geen privileges kunnen gebruiken die zijn verleend via rollen in PL/SQL. U heeft dus uw DBA nodig om het CREATE TABLE-recht rechtstreeks aan uw gebruiker toe te kennen.

Of jij?

Want wat je probeert te doen klopt niet in Oracle. In Oracle zijn globale tijdelijke tabellen permanent structuren; het zijn alleen de gegevens erin die tijdelijk zijn. De juiste oplossing is dus om de tabel eenmaal te bouwen met een normaal DDL-script, zoals elk ander database-object. Dan kunt u gewoon invoegen in de globale tijdelijke tabel als dat nodig is.

Je bent niet de eerste persoon op deze site die deze fout maakt (lees deze relevante thread). Vaak is het omdat mensen uit een andere database komen, zoals SQL Server, die een constructie heeft met de naam "tijdelijke tabel", die in feite verschilt van de globale tijdelijke tabellen van Oracle. Als dat uw scenario is, zult u geïnteresseerd zijn in een nieuwe functie van Oracle 18c genaamd Private Temporary Tables. Deze zijn precies analoog aan tijdelijke SQL Server-tabellen. Lees meer.




  1. Hoe een vierkant in SQL Server te berekenen

  2. Blijft de volgorde in een subquery gegarandeerd behouden?

  3. Rijen dupliceren op basis van een kolomwaarde in elke rij

  4. Vergelijk datums die zijn opgeslagen als string met behulp van Datetime