![](/img/trans.png)
[英]Can not drop a temp table Invalid object name '#Temp1' error - in sql server
[英]Can't drop temp table SQL
您好我创建一个临时表并将数据插入表。 我将使用Temp表将其加入特定用户。
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 ... INTO ...语句本身创建#Temp表。 这里不需要CREATE TABLE语句。 删除“CREATE TABLE”语句并尝试。
您的数据库中已有一个名为“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
语句 - 我有效地创建了两次表 - 尽管CREATE TABLE
语句是在单独的BEGIN
之间和END
标记,并有一个DROP TABLE
语句在第二个CREATE
语句之前删除第一个'实例',我遇到了这个确切的错误。
微软关于如何删除临时表的官方回答对我有帮助。 总之,我使用它,它工作得很好。
use tempdb
go
IF OBJECT_ID(N'tempdb..#yourtemptable', N'U') IS NOT NULL
DROP TABLE #yourtemptable;
GO
使用MS SQL 2017
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.