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
语句是在单独的BEGIN
和END
标记之间,并且在第二个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