Santhosh Kumar Ответов: 2

Как использовать глобальную временную таблицу в функции oracle


Привет,

Я хочу использовать временную переменную в функции oracle, но функция не принимает таблицу, может ли кто-нибудь предоставить мне синтаксис для создания и использования временной таблицы в функции oracle.

Я использовал следующий код в функции

create global temporary table store_sales 
on commit delete rows 
as select * from tbl_folders


но я получаю следующую ошибку
Compilation failed,line 17 (18:44:28)
PLS-00103: Encountered the symbol "CREATE" when expecting one of the following: ( begin case declare exit for goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge



Спасибо.

George Jonsson

Как выглядит код перед операцией CREATE?

2 Ответов

Рейтинг:
19

Jörgen Andersson

Вы не можете использовать DDL внутри функции.

Просто создайте временную таблицу и позвольте ей существовать в вашем табличном пространстве. Все данные, которые вы вставляете в него, будут использоваться только в этом сеансе. Поэтому нет необходимости создавать и удалять его для каждой транзакции.
Так что вы можете просто использовать:

INSERT INTO store_sales 
select * from tbl_folders
Так как вы уже указали on commit delete rows, данные будут автоматически удалены при фиксации или откате транзакции.


Рейтинг:
1

Member 13514037

Я использую приведенный ниже код и успешно работаю.
Ниже приводится инструкция по созданию глобальной временной таблицы.

Создайте глобальную временную таблицу xx_am_temp_tbl_emp2
после фиксации удалять строки Как выбрать ид_сотрудника, " имя " из XX_am_employees;

Результат : Создана глобальная временная таблица.


Jochen Arndt

Этому вопросу уже два года, и вы пропустили, что он пытался создать таблицу внутри функции, которая не разрешена.