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

create procedure gp_findtemptable -- 2001/10/26 21:36 zhuzhichao in nanjing

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

 * 如无则将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 @ 2006-08-17 13:11  鬼画符  阅读(1077)  评论(0编辑  收藏  举报