无法删除临时表 SQL

  • 本文关键字:SQL 临时表 删除 sql
  • 更新时间 :
  • 英文 :


hi im创建一个临时表并将数据插入表。我将使用临时表将其加入特定用户。

CREATE TABLE #MyTempTable
(
    UsersId int,
    ValautionCount int 
)
    SELECT
        U.UserId, 
        COUNT(*) AS ValautionCount
    INTO  #MyTempTable
    FROM 
        Users U
        Right JOIN Valuation V ON V.ValuationUser = U.UserId
    GROUP BY 
        U.UserId

DROP TABLE #MyTempTable

当我运行此查询时,我会收到此错误:数据库中的对象已经名为" #temp"。

但是,当我运行此查询DROP TABLE #MyTempTable时,我会得到此错误:无法删除表'#temp',因为它不存在或您没有许可。我使用SQL 2012

select ... in ...语句本身创建#TEMP表。在这里不需要创建表语句。删除"创建表"语句并尝试。

您已经在数据库中使用名称" temp"的实体。而且您由于访问权限而无法删除该实体。

无需丢弃临时表,因为它仅在会话之前可见。

Create PROCEDURE proctemptable
BEGIN
IF object_id('tempdb..#Temp') is not null  // Try this hope this will work
BEGIN
  DROP TABLE #Temp
END
CREATE TABLE #Temp
(
    UsersId int,
    ValautionCount int 
)
SELECT
    U.UserId, 
    COUNT(*) AS ValautionCount
INTO  #Temp
FROM 
    Users U
    Right JOIN Valuation V ON V.ValuationUser = U.UserId
GROUP BY 
    U.UserId
//DROP TABLE #Temp 
END

无需丢弃#TEMP表,它将在已存储过程执行完成

时自动删除它

请参考此链接以获取SQL Server中的更多临时表

http://www.simple-talk.com/sql/t-sql-programming/temporary-tables-in-sql-server/

您可以在代码中两次创建同一表。

我遇到了同样的问题,我已经复制了我想重复使用(修改)的代码部分,包括CREATE TABLE语句 - 我有效地创建了Table TWIET TWIES - 甚至尽管CREATE TABLE语句是在单独的BEGINEND标记之间,并且在第二个CREATE语句之前有一个DROP TABLE语句删除了第一个"实例",但我遇到了这个确切的错误。

Microsoft Page的官方答案有关如何删除临时表帮助我。简而言之,我使用了它,而且工作正常。

use tempdb
go
IF OBJECT_ID(N'tempdb..#yourtemptable', N'U') IS NOT NULL   
DROP TABLE #yourtemptable;  
GO  

使用MS SQL 2017

最新更新