测试对象是否不存在,但仍然收到错误消息 2714 T-SQL

问题描述 投票:0回答:1

我正在编写一个脚本,根据标准以两种不同的方式构建表格。但是,当我尝试执行时,我不断收到 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”的对象。

对此的任何帮助或指导将不胜感激。谢谢你

sql sql-server database object-identity
1个回答
0
投票

做你想做的事情的一种更简单的方法就是这样。

DROP TABLE IF EXISTS #TestTable;

SELECT * INTO #TestTable 
FROM dbo.ExsitingDataTable 
WHERE criteriaYear = YEAR(GETDATE())

SELECT * FROM #TestTable

SELECT * INTO SomeTable
动态创建一个表,如果已经存在一个名为
SomeTable
的表,则该语句将失败。

© www.soinside.com 2019 - 2024. All rights reserved.