在sql server上获取错误无法删除表'#h',因为它不存在或您没有权限

时间:2017-06-27 12:04:21

标签: sql-server

我为SQL Server中的用户明智获取提要列表创建了一个存储过程。在这个存储过程中,我使用了游标和临时表。所以我运行商店程序,那时我得到这样的错误“不能丢弃表'#h',因为它不存在或者你没有权限。”在我的本地PC上。

这是我的商店程序=>

alter PROCEDURE [dbo].[UserList]    
  AS
 BEGIN      

DECLARE @UserId Int

DECLARE csrUsers CURSOR FOR
SELECT UserId FROM dbo.users 

OPEN csrUsers
    FETCH NEXT FROM csrUsers INTO @UserId

        WHILE @@FETCH_STATUS = 0
        BEGIN
        print @UserId                           

        SELECT * into #h FROM feed where feed = @UserId         
        FETCH NEXT FROM csrUsers INTO @UserId                                                   
                    END         
                CLOSE csrUsers   
            DEALLOCATE csrUsers

            select * from #h
            drop table #h

  END

任何人都知道我的问题在哪里请告诉我怎么做。

1 个答案:

答案 0 :(得分:-1)

你不需要光标

alter PROCEDURE [dbo].[UserList]    
AS

BEGIN      

SELECT * 
into #h 
FROM feed where c.feed in(SELECT UserId FROM dbo.users)

begin try
    select * from #h
end try
begin catch
end catch

begin try
    drop table #h
end try
begin catch
end catch

end
go

如果您没有收到任何数据,那么您的“'进入'不会创建临时表,因此你不能顺便放弃它。