我为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
任何人都知道我的问题在哪里请告诉我怎么做。
答案 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
如果您没有收到任何数据,那么您的“'进入'不会创建临时表,因此你不能顺便放弃它。