[英]How to drop temporary table in Stored Procedure
正确的。 如果要使用 SELECT INTO 语句在同一批次中使用它们,则必须为 2 个临时表指定不同的名称,并在其间使用 DIE 语句。
或者,您可以先创建临时表,其中包含 SELECT 语句的所有必需列,然后相应地调整 SELECT(或您使用临时表数据运行的任何语句)。
例如
BEGIN
DROP TABLE IF EXISTS #deleted ;
CREATE TABLE #deleted ( [one] VARCHAR(5) NULL, [two] VARCHAR(5) NULL ) ;
INSERT INTO #deleted ( [one] )
SELECT 'a' AS [one] ;
INSERT INTO #deleted ( [two] )
SELECT 'b' AS [two] ;
SELECT [one] FROM #deleted WHERE [two] IS NULL ;
SELECT [two] FROM #deleted WHERE [one] IS NULL ;
DROP TABLE IF EXISTS #deleted ;
END
GO
更新 1
如前所述,您可以为临时表指定不同的名称。
例如
BEGIN
SELECT 'a' AS [one]
INTO #deleted1 ;
SELECT * FROM #deleted1 ; -- or whatever statements you need to execute
DROP TABLE IF EXISTS #deleted1 ;
SELECT 'b' AS [two]
INTO #deleted2 ;
SELECT * FROM #deleted2 ; -- or whatever statements you need to execute
DROP TABLE IF EXISTS #deleted2 ;
END
GO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.