Мога ли да декларирам локална временна таблица в Oracle 12c

Опитвам се да декларирам локална временна таблица, като използвам примера от 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 потребител.

Защо този пример не работи за мен?


person Gryu    schedule 18.06.2019    source източник
comment
Мисля, че ще намерите отговор тук: community.oracle.com/thread/3714968   -  person hotfix    schedule 18.06.2019
comment
Не само, че LOCAL TEMPORARY TABLE не е нещо в Oracle, това дори не е валиден синтаксис на Oracle. Така че учението е, и то наистина важно учение, има много глупости в интернет. Затова трябва да се научите да използвате документацията на Oracle, вместо да се доверявате на произволни уебсайтове , дори такива, които се отличават с високи позиции в търсенията с Google.   -  person APC    schedule 18.06.2019


Отговори (1)


local temporary tables не са нещо в Oracle RDBMS. Вместо това можете да имате глобална временна таблица (GTT) (което създава постоянна таблица, но данните се съхраняват на ниво сесия) или, въведено в 18c, можете да имате Частна временна таблица (PTT) (дефиницията на таблицата и данните се съхраняват на ниво сесия).

И двете са подобни на стандартния оператор за създаване на таблица, така че за да създадете GTT, който изпуска редовете, когато се ангажирате, ще направите нещо като:

create global temporary table table_name (col1 number, col2 varchar2(20))
   on commit delete rows;
person Boneist    schedule 18.06.2019