﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Java&amp;Database&amp;Web</title><link>http://www.blogjava.net/BeyondBoyxb/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 06:29:20 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 06:29:20 GMT</pubDate><ttl>60</ttl><item><title>利用SQL Server的全局临时表防止用户重复登录</title><link>http://www.blogjava.net/BeyondBoyxb/archive/2007/09/25/147987.html</link><dc:creator>BeyondBoy</dc:creator><author>BeyondBoy</author><pubDate>Tue, 25 Sep 2007 02:12:00 GMT</pubDate><guid>http://www.blogjava.net/BeyondBoyxb/archive/2007/09/25/147987.html</guid><wfw:comment>http://www.blogjava.net/BeyondBoyxb/comments/147987.html</wfw:comment><comments>http://www.blogjava.net/BeyondBoyxb/archive/2007/09/25/147987.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/BeyondBoyxb/comments/commentRss/147987.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BeyondBoyxb/services/trackbacks/147987.html</trackback:ping><description><![CDATA[<div>
<p>create procedure gp_findtemptable<br />
<br />
/* <span style="font-family: 宋体">寻找以操作员工号命名的全局临时表</span></p>
<p>&nbsp;* <span style="font-family: 宋体">如无则将</span>out<span style="font-family: 宋体">参数置为</span>0<span style="font-family: 宋体">并创建该表</span>,<span style="font-family: 宋体">如有则将</span>out<span style="font-family: 宋体">参数置为</span>1 </p>
<p>&nbsp;* <span style="font-family: 宋体">在</span>connection<span style="font-family: 宋体">断开连接后</span>,<span style="font-family: 宋体">全局临时表会被</span>SQL Server<span style="font-family: 宋体">自动回收</span></p>
<p style="margin-left: 6pt">* <span style="font-family: 宋体">如发生断电之类的意外</span>,<span style="font-family: 宋体">全局临时表虽然还存在于</span>tempdb<span style="font-family: 宋体">中</span>,<span style="font-family: 宋体">但是已经失去活性</span></p>
<p style="margin-left: 6pt">* <span style="font-family: 宋体">用</span>object_id<span style="font-family: 宋体">函数去判断时会认为其不存在</span>.</p>
<p>&nbsp;*/</p>
<p>@v_userid varchar(6), -- <span style="font-family: 宋体">操作员工号</span></p>
<p>@i_out int out -- <span style="font-family: 宋体">输出参数</span> 0:<span style="font-family: 宋体">没有登录</span> 1:<span style="font-family: 宋体">已经登录</span></p>
<p>as</p>
<p>declare @v_sql varchar(100)</p>
<p>if object_id('tempdb.dbo.##'+@v_userid) is null</p>
<p>begin</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set @v_sql = 'create table ##'+@v_userid+'(userid varchar(6))'</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exec (@v_sql)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set @i_out = 0</p>
<p>end</p>
<p>else</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set @i_out = 1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">在这个过程中，我们看到如果以用户工号命名的全局临时表不存在时过程会去创建一张并把</span>out<span style="font-family: 宋体">参数置为</span>0<span style="font-family: 宋体">，如果已经存在则将</span>out<span style="font-family: 宋体">参数置为</span>1<span style="font-family: 宋体">。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">这样，我们在我们的应用程序中调用该过程时，如果取得的</span>out<span style="font-family: 宋体">参数为</span>1<span style="font-family: 宋体">时，我们可以毫不客气地跳出一个</span>message<span style="font-family: 宋体">告诉用户说</span>&#8221;<span style="font-family: 宋体">对不起，此工号正被使用！</span>&#8221;</p>
</div>
<img src ="http://www.blogjava.net/BeyondBoyxb/aggbug/147987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BeyondBoyxb/" target="_blank">BeyondBoy</a> 2007-09-25 10:12 <a href="http://www.blogjava.net/BeyondBoyxb/archive/2007/09/25/147987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>