我正在编写一个脚本,根据标准以两种不同的方式构建表格。但是,当我尝试执行时,我不断收到 Msg 2714 错误。 我已将脚本精简为生成错误的基本行,但我不确定如何纠正。
DECLARE @Test nchar(1) = 'N'
IF OBJECT_ID(N'tempdb..#TestTable', N'U') IS NOT NULL DROP TABLE #TestTable
IF @Test = 'N' GoTo NoTest
Test:
IF OBJECT_ID(N'tempdb..#TestTable', N'U') IS NULL
BEGIN
CREATE TABLE #TestTable (
Idx int NOT NULL
, data nvarchar(30) NOT NULL
)
END
NoTest:
IF OBJECT_ID(N'tempdb..#TestTable', N'U') IS NULL
BEGIN
SELECT * INTO #TestTable FROM dbo.ExsitingDataTable WHERE criteriaYear = YEAR(GETDATE())
END
SELECT * FROM #TestTable
如果 #testTable 未在脚本的 Test: 部分中创建,我会在脚本的 NoTest: 部分中创建表,并使用 IF OBJECT_ID 进行检查。 但是,当我尝试运行上面的测试代码或竞争脚本时,我收到相同的错误消息:
消息 2714,第 16 级,状态 1,第 21 行 数据库中已有一个名为“#TestTable”的对象。
对此的任何帮助或指导将不胜感激。谢谢你
做你想做的事情的一种更简单的方法就是这样。
DROP TABLE IF EXISTS #TestTable;
SELECT * INTO #TestTable
FROM dbo.ExsitingDataTable
WHERE criteriaYear = YEAR(GETDATE())
SELECT * FROM #TestTable
SELECT * INTO SomeTable
动态创建一个表,如果已经存在一个名为 SomeTable
的表,则该语句将失败。