为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8/月度版/2024.06/dm8_20240918_x86_win_64_sec_8.1.3.162_pack12/dm8_20240918_x86_win_64.iso
【操作系统】:windows server 2022
【CPU】:
【问题描述】*:工程师说这个新版本支持sql server局部临时表,方便给一个例子写法吗,谢谢。
2025.1之后的版本才支持,用法参考如下:
begin
create table #TMP1 (id int, name VARCHAR(20));
insert into #TMP1(id, name) values(1,'a');
commit;
select * from #TMP1;
end;
1.在sqlserver 局部临时表:
命名是以单个 “#” 开头,例如 “#temp_table”。它仅在创建它的会话(连接)中可见。这意味着不同的用户会话可以创建名称相同的局部临时表,而不会相互干扰。每个局部临时表只服务于创建它的那个特定会话,就像每个用户在自己的小房间(会话)里使用自己的临时工具(局部临时表)一样。
全局临时表:
命名是以 “##” 开头,例如 “##global_temp_table”。它在整个数据库服务器范围内可见,只要创建全局临时表的会话没有结束,并且其他用户具有适当的权限,就可以访问和使用这个全局临时表。可以把全局临时表想象成放在公共区域的工具,只要满足条件,所有用户都可以使用。
2.达梦数据库的临时表您可以理解为sqlserver的局部临时表他有2个参数
ON COMMIT<DELETE | PRESERVE>ROWS 用来指定临时表(TEMPORARY)中的数据是事务级或会话级的,缺省情况下是事务级。 ON COMMIT DELETE ROWS:指定临时
表是事务级的,每次事务提交或回滚之后,表中所有数据都被删除; ON COMMIT PRESERVEROWS:指定临时表是会话级的,会话结束时才清空表