在 SQL Server 存储过程中使用临时表时,最好的做法是:
1)创建临时表,填充数据,使用后立即删除。
CREATE TABLE #MyTable ( ... )
-- Do stuff
DROP TABLE #MyTable
2) 检查它是否存在,如果存在则删除它,然后创建并使用它
IF object_id('tempdb..#MyTable') IS NOT NULL
DROP TABLE #MyTable
CREATE TABLE #MyTable ( ... )
3) 创建它,并在其作用域结束时由SQL Server清理
CREATE TABLE #MyTable ( ... )
-- Do Stuff
我在这个答案和相关评论中读到,这在临时表被重复使用的情况下可能是有用的,SQL Server会截断表但保留结构以节省时间。
我的存储过程可能会经常被调用,但它只包含几列,所以我不确定这对我的情况是否真的有优势。
SELECT
/INTO
隐式地创建表。 - HABOSELECT
/INTO
的问题并不完全离题。再次道歉。 - HABO