Могу ли я объявить локальную временную таблицу в Oracle 12c - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь объявить локальную временную таблицу, используя пример из Oracle / PLSQL: ЛОКАЛЬНЫЕ ВРЕМЕННЫЕ ТАБЛИЦЫ . Но когда я пытаюсь вставить его в sqlplus' CLI и нажать Enter , он ничего не выполняет, и я не знаю, что делать дальше, чтобы завершить команду, кроме нажатия Ctrl + C прерывание ввода команды:

SQL> DECLARE LOCAL TEMPORARY TABLE suppliers_temp
( supplier_id number(10) NOT NULL,
  supplier_name varchar2(50) NOT NULL,
  contact_name varchar2(50)
);  2    3    4    5
  6
  7  ;
  8  ^C

Чтобы выполнить этот запрос, я вошел как SYSTEM пользователь.

Почему этот пример у меня не работает?

Спасибо!

1 Ответ

4 голосов
/ 18 июня 2019

local temporary tables - не вещь в СУБД Oracle. Вместо этого вы можете иметь Глобальную временную таблицу (GTT) (которая создает постоянную таблицу, но данные хранятся на уровне сеанса) или, введенную в 18c, вы можете иметь Частная временная таблица (PTT) (определение таблицы и данные хранятся на уровне сеанса).

Оба схожи со стандартным оператором create table, поэтому для создания GTT, который удаляет строки при фиксации, вы должны сделать что-то вроде:

create global temporary table table_name (col1 number, col2 varchar2(20))
   on commit delete rows;
...