我以这种方式在 SAP HANA 中创建一个临时表:
create local temporary table #sometable(table definition);
但是,此表不支持 delete 语句。即调用:
delete from #sometable;
会抛出错误:
feature not supported
在存储过程中使用此表时,内容将与新数据连接,而不是被新数据替换。我该如何解决这个问题?
我以这种方式在 SAP HANA 中创建一个临时表:
create local temporary table #sometable(table definition);
但是,此表不支持 delete 语句。即调用:
delete from #sometable;
会抛出错误:
feature not supported
在存储过程中使用此表时,内容将与新数据连接,而不是被新数据替换。我该如何解决这个问题?
我最近遇到了同样的问题,并在SAP Hana Developer Guide中找到了下一个解释:
您可以为 @Catalog.tableType 注释定义以下值:
. . .
3) #GLOBAL_TEMPORARY
设置创建表的范围。全局临时表中的数据是特定于会话的;仅允许全局临时表的所有者会话插入/读取/截断数据。在会话期间存在一个全局临时表,并且在会话终止时会自动删除全局临时表中的数据。只有当表中没有任何记录时,才能删除全局临时表。
这意味着您可以使用 truncate 清除临时表:
truncate table #sometable;
您使用的是什么 HANA 修订版?在最新的 Revision 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