首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >存储过程和其中临时表的使用?

存储过程和其中临时表的使用?
EN

Stack Overflow用户
提问于 2017-05-18 22:39:06
回答 3查看 133关注 0票数 0

我知道基本的sql命令,这是我第一次使用存储过程。在我正在查看的存储过程中,有几个临时表。这个过程每天早上都会被触发,然后提取一个特定的ID,然后循环每个ID以获取特定的参数。

我的问题是:在存储过程中是否使用临时表,以便当过程结束时,变量将立即传递到参数和循环中,然后临时表将被清除,从而重新启动下一个循环的进程?

EN

回答 3

Stack Overflow用户

发布于 2017-05-18 22:50:26

使用临时表是因为一旦创建临时表的会话(或存储过程)关闭,临时表就会消失。名称前带有单个#的临时表(也称为本地临时表)仅在创建该临时表的会话中可见,因此可以在多个会话中创建具有相同名称的临时表,而不会相互碰撞(SQL Server在名称中添加字符以使其唯一)。如果创建了前面有两个##的临时表(全局临时表),则该临时表在SQL Server中是唯一的,因此其他会话可以看到它。临时表相当于便签簿。SQL Server重新启动时,所有临时表及其值都将消失。可以为临时表创建索引,SQL Server可以使用临时表的统计信息来创建高效的查询计划。

票数 2
EN

Stack Overflow用户

发布于 2017-05-18 23:05:35

对于存储过程(SP),它们是限制最少、功能最强的对象,例如:

  • 他们通常的替代方案,视图和函数,不允许使用很多东西,比如DML语句,temp。表、事务等。
  • SP可以避免返回结果集。它们还可以返回多个结果集。

对于临时。表:

  • 是,一旦SP完成,表将随其内容一起消失(至少对于单#表)。
  • 与其替代方案(实际表、表变量、各种非表解决方案)相比,它们各有优势和劣势。
票数 2
EN

Stack Overflow用户

发布于 2017-05-18 22:49:31

在我看来,存储过程并不强制需要临时表。这取决于SP的范围来决定使用TempTable是否是最好的方法。

例如,假设我们想要检索连接几个表的元素列表,那么最好使用TempTable来放置连接的字段。另一方面,如果我们使用存储过程来检索单个或字段,我认为没有必要使用临时表。

临时表仅在使用存储过程期间可用,一旦存储过程完成,表就会超出范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44050843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档