我知道基本的sql命令,这是我第一次使用存储过程。在我看的存储过程中,有几个临时表。 每天早晨触发该过程,然后拉出特定ID,然后遍历每个ID以获取某些参数。
我的问题是:是存储过程中使用的临时表,这样当程序关闭时,变量将立即传递到参数和循环中,然后临时表将被清除,从而重新启动下一个循环的过程?
答案 0 :(得分:2)
使用临时表是因为只要创建它们(或存储过程)的会话关闭,临时表就会消失。名称前面带有单个#的Temp表(也称为本地临时表)仅在创建它的会话中可见,因此可以在多个会话中创建具有相同名称的临时表,而不会相互碰撞( SQL Server将名称添加到名称中以使其唯一)。如果创建了一个前面有两个##的临时表(全局临时表),那么它在SQL Server中是唯一的,因此其他会话可以看到它。临时表相当于便笺簿。重新启动SQL Server时,所有临时表及其值都消失了。临时表可以为它们创建索引,SQL Server可以使用临时表的统计信息来创建有效的查询计划。
答案 1 :(得分:2)
对于存储过程(SP),它们是受限最少且功能最强的对象,例如:
对于临时。表:
答案 2 :(得分:1)
在我看来,存储过程并不强制需要临时表。由SP决定是否使用TempTable是最好的方法。
例如,假设我们想要检索从连接几个表中出来的元素列表,那么最好有一个TempTable来放置连接的字段。另一方面,如果我们使用存储过程来检索单个或字段,我就不会看到对Temp表的需要。
临时表仅在使用存储过程期间可用,一旦完成,表格超出范围。