create procedure gp_findtemptable
/* 尋找以操作員工號命名的全局臨時(shí)表
* 如無則將out參數(shù)置為0并創(chuàng)建該表,如有則將out參數(shù)置為1
* 在connection斷開連接后,全局臨時(shí)表會被SQL Server自動回收
* 如發(fā)生斷電之類的意外,全局臨時(shí)表雖然還存在于tempdb中,但是已經(jīng)失去活性
* 用object_id函數(shù)去判斷時(shí)會認(rèn)為其不存在.
*/
@v_userid varchar(6), -- 操作員工號
@i_out int out -- 輸出參數(shù) 0:沒有登錄 1:已經(jīng)登錄
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
在這個過程中,我們看到如果以用戶工號命名的全局臨時(shí)表不存在時(shí)過程會去創(chuàng)建一張并把out參數(shù)置為0,如果已經(jīng)存在則將out參數(shù)置為1。
這樣,我們在我們的應(yīng)用程序中調(diào)用該過程時(shí),如果取得的out參數(shù)為1時(shí),我們可以毫不客氣地跳出一個message告訴用戶說”對不起,此工號正被使用!”