Sqlserver 中临时表和全局临时表

Sqlserver 中临时表和全局临时表,第1张

概述SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。 临时表有两种类型:  本地临时表  以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。 全局临时表  以两个井号 (##) 开头的那些表名。在所有

sql Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,sql Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。@H_502_7@@H_502_7@临时表有两种类型:  @H_502_7@@H_502_7@本地临时表  @H_502_7@以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。@H_502_7@@H_502_7@全局临时表  @H_502_7@以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。@H_502_7@==========================================================================

sql code
                               --        应用本地临时表                 declare                 @sql                 varchar        (        100        )         set                 @sql        =        '        select         ''        123        ''         as a,        ''        abasdf        ''         as b into #t        '                 exec        (        @sql        )         select                 *                 from         #t         go                 /*        发现不能正确显示临时表的数据 提示: 服务器: 消息 208,级别 16,状态 1,行 5 对象名 '#t' 无效。         */                 --        修改为全局临时表                 declare                 @sql                 varchar        (        100        )         set                 @sql        =        '        select         ''        123        ''         as a,        ''        abasdf        ''         as b into ##t        '                 exec        (        @sql        )         select                 *                 from         ##t         drop                 table         ##t         go                 /*        可以正确显示临时表的数据       

@H_502_7@分析原因:exec(@sql) 相当于重新建立一个数据库对话,所以对于本地临时表,使用exec(@sql)创建临时表,@H_502_7@在exec外部不能正确访问;而使用全局临时表就ok了@H_502_7@*/ 

sql code
                      exec         (        '        select top 10 * into ##temp from syhouse        '        );         exec         (        '        select * from ##temp        '        );       
总结

以上是内存溢出为你收集整理的Sqlserver 中临时表和全局临时表全部内容,希望文章能够帮你解决Sqlserver 中临时表和全局临时表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1183405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存