Oracle
 sql >> база данни >  >> RDS >> Oracle

Потребителят на схемата на Oracle не може да създаде таблица в процедура

Отговорът на вашия незабавен въпрос е, че получавате ORA-01031: insufficient privileges тъй като вашият потребител има привилегията CREATE TABLE, предоставена чрез роля:моделът за сигурност на Oracle налага правило, че не можем да използваме привилегии, предоставени чрез роли в PL/SQL. Така че имате нужда от вашия DBA, за да предостави директно привилегията CREATE TABLE на вашия потребител.

Или ти?

Защото това, което се опитвате да направите, няма смисъл в Oracle. В Oracle глобалните временни таблици сапостоянни конструкции; просто данните в тях са временни. И така, правилното решение е да изградите таблицата веднъж с нормален DDL скрипт, както всеки друг обект на база данни. След това можете просто да вмъкнете в глобалната временна таблица, както е необходимо.

Вие не сте първият човек на този сайт, който прави тази грешка (прочетете тази подходяща тема). Често това е така, защото хората идват от друга база данни като SQL Server, която има конструкция, наречена "временна таблица", която всъщност е различна от глобалните временни таблици на Oracle. Ако това е вашият сценарий, тогава ще се интересувате от нова функция на Oracle 18c, наречена Private Temporary Tables. Те са точно аналогични на временните таблици на SQL Server. Научете повече.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. N-та максимална заплата в Oracle

  2. Уникален ключ в Oracle с примери

  3. PL/SQL променливите в курсорите ефективно ли са същите като параметрите за свързване?

  4. Причина, поради която Oracle е чувствителен към малки и големи букви?

  5. Задаване на изчакване на мрежата за JDBC връзка