Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Użytkownik schematu Oracle nie może utworzyć tabeli w procedurze

Odpowiedź na twoje bezpośrednie pytanie jest taka, że ​​otrzymujesz ORA-01031: insufficient privileges ponieważ twój użytkownik ma uprawnienie CREATE TABLE nadane przez rolę:model bezpieczeństwa Oracle wymusza regułę, że nie możemy używać uprawnień nadanych przez role w PL/SQL. Potrzebujesz więc administratora DBA, aby bezpośrednio przyznać uprawnienie CREATE TABLE Twojemu użytkownikowi.

A może ty?

Ponieważ to, co próbujesz zrobić, nie ma sensu w Oracle. W Oracle globalne tabele tymczasowe są stałe Struktury; to tylko dane w nich są tymczasowe. Tak więc właściwym rozwiązaniem jest jednokrotne zbudowanie tabeli za pomocą normalnego skryptu DDL, tak jak w przypadku każdego innego obiektu bazy danych. Następnie możesz po prostu wstawić do globalnej tabeli tymczasowej, jak potrzebujesz.

Nie jesteś pierwszą osobą na tej stronie, która popełniła ten błąd (przeczytaj ten odpowiedni wątek). Często dzieje się tak, ponieważ ludzie pochodzą z innej bazy danych, takiej jak SQL Server, która ma konstrukcję o nazwie „tabela tymczasowa”, która w rzeczywistości różni się od globalnych tabel tymczasowych Oracle. Jeśli taki jest Twój scenariusz, zainteresuje Cię nowa funkcja Oracle 18c o nazwie Private Temporary Tables. Są one dokładnie analogiczne do tabel tymczasowych SQL Server. Dowiedz się więcej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-06508:PL/SQL:nie można znaleźć wywoływanej jednostki programu

  2. Jak wysłać e-mail za pomocą Oracle 10 g Forms

  3. LongOpsWatcher w SQL Dev

  4. C#:Przekaż typ zdefiniowany przez użytkownika do procedury składowanej Oracle

  5. Powiązanie parametrów z Oracle Dynamic SQL