次の SQL Server ストアド プロシージャがあります。
CREATE PROCEDURE ispsDcOhcAgg @TmpTableName NVARCHAR(50), @ListItem NVARCHAR(50)
AS
IF EXISTS (SELECT name
FROM sys.tables
WHERE name = @TmpTableName)
DROP TABLE @TmpTableName; -- This will not work.
GO
これは明らかに機能しません (上記のスニピットのコメントを参照してください)。この問題を回避するために私が見つけた唯一の(そして非常に醜い)方法は、次のことです
CREATE PROCEDURE ispsDcOhcAgg @TmpTableName NVARCHAR(50), @ListItem NVARCHAR(50)
AS
DECLARE @SQL NVARCHAR(4000)
SET @SQL = N'IF EXISTS (SELECT name ' +
N'FROM sys.tables ' +
N'WHERE name = N' + N'''' + @TmpTableName + N''') ' +
N'DROP TABLE ' + @TmpTableName + N';'
EXEC sp_executesql @SQL;
GO
これは本当に悪臭を放ち、大規模なストアド プロシージャの場合は恐ろしいことです。
私が知らないこれを行う別の方法はありますか?
御時間ありがとうございます。