SQL SERVER临时表的问题
为防止多用户同时访问一个界面,想利用系统临时表做这个功能,
我在数据库上做了个存储过程
create PROCEDURE [dbo].[sd_霸占大厅]
(
@caozuoyuan nvarchar(10)
)
AS
BEGIN
set nocount on
set ansi_warnings off
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##bzdt'))
select czy from ##bzdt
ELSE
begin
create table ##bzdt
(
czy varchar(10)
)
insert ##bzdt
select @caozuoyuan as czy
select '' as czy
end
END
当用户在客户端打开指定窗体时调用这个存储过程,如果返回一个大于0长度的字符,则说明有人在使用指定界面,就关闭窗体。(客户端connection对象是一个窗体级别的变量,窗体加载时打开连接,窗体关闭时关闭连接。)
但在实际使用时发现,如果一个用户进入指定界面,另一个用户再打开窗体进入这个界面的时候,第一个有效,可以获取到有人在使用该界面,并自动关闭窗体。但当第二次再打开该窗体时,就获取不到##bzdt临时表了。经过试验发现,当第一个用户调用该存储过程后,数据库会生成一个##bzdt临时表,如果该用户不关闭界面,则该临时表一直存在,但一旦有其他用户调用该存储过程后,即便第一个用户没有关闭界面,则##bzdt临时表也不再存在了。和我想要的结果不一样。请大神帮忙分析是怎么回事。