我知道基本的sql命令,这是我第一次使用存储过程。在我正在查看的存储过程中,有几个临时表。这个过程每天早上都会被触发,然后提取一个特定的ID,然后循环每个ID以获取特定的参数。
我的问题是:在存储过程中是否使用临时表,以便当过程结束时,变量将立即传递到参数和循环中,然后临时表将被清除,从而重新启动下一个循环的进程?
发布于 2017-05-18 14:50:26
使用临时表是因为一旦创建临时表的会话(或存储过程)关闭,临时表就会消失。名称前带有单个#的临时表(也称为本地临时表)仅在创建该临时表的会话中可见,因此可以在多个会话中创建具有相同名称的临时表,而不会相互碰撞(SQL Server在名称中添加字符以使其唯一)。如果创建了前面有两个##的临时表(全局临时表),则该临时表在SQL Server中是唯一的,因此其他会话可以看到它。临时表相当于便签簿。SQL Server重新启动时,所有临时表及其值都将消失。可以为临时表创建索引,SQL Server可以使用临时表的统计信息来创建高效的查询计划。
发布于 2017-05-18 15:05:35
对于存储过程(SP),它们是限制最少、功能最强的对象,例如:
对于临时。表:
发布于 2017-05-18 14:49:31
在我看来,存储过程并不强制需要临时表。这取决于SP的范围来决定使用TempTable是否是最好的方法。
例如,假设我们想要检索连接几个表的元素列表,那么最好使用TempTable来放置连接的字段。另一方面,如果我们使用存储过程来检索单个或字段,我认为没有必要使用临时表。
临时表仅在使用存储过程期间可用,一旦存储过程完成,表就会超出范围。
https://stackoverflow.com/questions/44050843
复制