как удалить содержимое временной таблицы в SAP HANA?

Я создаю временную таблицу в SAP HANA следующим образом:

  create local temporary table #sometable(table definition);

однако оператор удаления не поддерживается для этой таблицы. то есть вызов:

 delete from #sometable; 

выдаст ошибку:

 feature not supported

При использовании этой таблицы в хранимой процедуре содержимое объединяется с новыми данными, а не заменяется ими. Как я могу решить эту проблему?


person Mohamed Ali JAMAOUI    schedule 24.10.2013    source источник


Ответы (2)


Какую версию HANA вы используете? На самой последней ревизии 68 он работает просто отлично:

;drop table #sometable;
create local temporary table #sometable(id integer, str nvarchar(30));

insert into #sometable values (1,'one');
insert into #sometable values (2,'two');
insert into #sometable values (3,'three');

select * from #sometable;  --> returns 3 rows
delete from #sometable;
select * from #sometable;  --> returns 0 rows
person schmerdy - Sonos    schedule 25.10.2013

Недавно я столкнулся с той же проблемой и нашел следующее объяснение в Руководстве для разработчиков SAP Hana:

Вы можете определить следующие значения для аннотации @Catalog.tableType:

. . .

3) #GLOBAL_TEMPORARY

Задайте область действия создаваемой таблицы. Данные в глобальной временной таблице зависят от сеанса; только сеанс владельца глобальной временной таблицы может вставлять/читать/обрезать данные. Глобальная временная таблица существует на время сеанса, и данные из глобальной временной таблицы автоматически удаляются при завершении сеанса. Глобальную временную таблицу можно удалить, только если в ней нет записей.

Это означает, что вы можете очистить временную таблицу, используя truncate:

truncate table #sometable;
person bsiamionau    schedule 21.02.2014