尽管有 drop 语句,数据库中已经有一个名为“#xxx”的对象
There is already an object named '#xxx' in the database despite drop statement
我有一个存储过程,其中在 if
else
块中有两个 INSERT INTO
语句,一个发生在 if
中,另一个发生在 else
所以他们不会发生冲突。但是在编译时,从 else 部分的那个它给出了 Is already an object named '#xxx' 尽管它前面有一个 drop 语句。
IF OBJECT_ID('tempdb..#xxx') IS NOT NULL
DROP TABLE #xxx
SELECT *
INTO #xxx
FROM FamilyDetails_tbl FD(NOLOCK)
有人能帮忙吗?
将您的 select
语句放入 exec
命令中,如下所示:
exec('SELECT *
INTO #xxx
FROM FamilyDetails_tbl FD(NOLOCK)')
您可以在 Transact-SQL 批处理中执行命令字符串或字符串。
IF OBJECT_ID('tempdb..#xxx') IS NOT NULL
EXEC ('SELECT 1 AS Col1 INTO #xxx') -- IF condition
ELSE
EXEC ('SELECT 2 AS Col2 into #xxx') -- ELSE condition
您是否试过像这样在 tempdb 前面添加 "N" :
IF OBJECT_ID(N'tempdb..#xxx') 不为空
它会像 ydoow 在上面建议的那样使用 EXEC 命令工作,但是如果您在该特定数据库中没有 EXEC 权限,那么唯一的选择就是像下面这样写。
如果 ('Condition')
开始
如果 OBJECT_ID('tempdb..#xxx') 不为空
丢弃 TABLE #xxx
SELECT
*进入#xxx
从表 1
哪里 'some condition'
结尾
别的
开始
如果 OBJECT_ID('tempdb..#xxx') 不为空
丢弃 TABLE #xxx
SELECT
*进入#xxx
从表 1
哪里 'some condition'
结束
我有一个存储过程,其中在 if
else
块中有两个 INSERT INTO
语句,一个发生在 if
中,另一个发生在 else
所以他们不会发生冲突。但是在编译时,从 else 部分的那个它给出了 Is already an object named '#xxx' 尽管它前面有一个 drop 语句。
IF OBJECT_ID('tempdb..#xxx') IS NOT NULL
DROP TABLE #xxx
SELECT *
INTO #xxx
FROM FamilyDetails_tbl FD(NOLOCK)
有人能帮忙吗?
将您的 select
语句放入 exec
命令中,如下所示:
exec('SELECT *
INTO #xxx
FROM FamilyDetails_tbl FD(NOLOCK)')
您可以在 Transact-SQL 批处理中执行命令字符串或字符串。
IF OBJECT_ID('tempdb..#xxx') IS NOT NULL
EXEC ('SELECT 1 AS Col1 INTO #xxx') -- IF condition
ELSE
EXEC ('SELECT 2 AS Col2 into #xxx') -- ELSE condition
您是否试过像这样在 tempdb 前面添加 "N" : IF OBJECT_ID(N'tempdb..#xxx') 不为空
它会像 ydoow 在上面建议的那样使用 EXEC 命令工作,但是如果您在该特定数据库中没有 EXEC 权限,那么唯一的选择就是像下面这样写。
如果 ('Condition') 开始 如果 OBJECT_ID('tempdb..#xxx') 不为空 丢弃 TABLE #xxx SELECT *进入#xxx 从表 1 哪里 'some condition' 结尾 别的 开始 如果 OBJECT_ID('tempdb..#xxx') 不为空 丢弃 TABLE #xxx SELECT *进入#xxx 从表 1 哪里 'some condition' 结束