Java&Database&Web

利用SQL Server的全局临时表防止用户重复登录

create procedure gp_findtemptable

/* 寻找以操作员工号命名的全局临时表

 * 如无则将out参数置为0并创建该表,如有则将out参数置为1

 * connection断开连接后,全局临时表会被SQL Server自动回收

* 如发生断电之类的意外,全局临时表虽然还存在于tempdb,但是已经失去活性

* object_id函数去判断时会认为其不存在.

 */

@v_userid varchar(6), -- 操作员工号

@i_out int out -- 输出参数 0:没有登录 1:已经登录

as

declare @v_sql varchar(100)

if object_id('tempdb.dbo.##'+@v_userid) is null

begin

        set @v_sql = 'create table ##'+@v_userid+'(userid varchar(6))'

        exec (@v_sql)

        set @i_out = 0

end

else

        set @i_out = 1

        在这个过程中,我们看到如果以用户工号命名的全局临时表不存在时过程会去创建一张并把out参数置为0,如果已经存在则将out参数置为1

        这样,我们在我们的应用程序中调用该过程时,如果取得的out参数为1时,我们可以毫不客气地跳出一个message告诉用户说对不起,此工号正被使用!

posted on 2007-09-25 10:12 BeyondBoy 阅读(644) 评论(1)  编辑  收藏 所属分类: Database

评论

# re: 利用SQL Server的全局临时表防止用户重复登录 2007-09-27 19:24 千里冰封

呵呵,不用中间表应该也可以做到吧,登录了就给一个标志  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

搜索

最新评论