sql – 临时表范围?
我在我的存储过程中使用临时表#tempTable – 我用它来运行我的ASP.net报告(报告服务)
我正在做类似的事情 例如.码 SELECT * INTO #tempTable FROM Contacts WHERE ContactID < 10 然后我用类似的东西 SELECT o.* FROM #tempTable t INNER JOIN Orders o ON t.ContactID =o.ContactID 将值返回到我的报告,即存储过程的结果 我没有摆脱我的#tempTable 即我不这样做 DROP TABLE #tempTable 我已经读过临时表的范围只适用于存储过程 – 所以这样做是必要的 – 如果我不做上面的话我将来会遇到什么问题 解决方法首先,在过程完成后,将删除在过程中创建的本地临时表.从 BOL on Create Table:
如果您的数据访问代码正确地打开连接,调用存储过程然后关闭连接,则会在该过程中创建临时表被有效销毁. 我说“有效地”提出另一点.我不建议在程序结束时删除临时表,尽管我会在创建临时表之前添加一个检查,如果存在则删除它(例如,如果object_id(‘tempdb .. #Foo’)不为空).反对在最后删除临时表的论点是,通过调用Drop语句,您迫使SQL Server在等待程序结束时花费资源来销毁表.相反,如果你让它超出范围,你的程序立即结束,你让SQL Server在自己选择的时候销毁表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |