2011-06-27 57 views
2

在存儲過程中,我使用傳入的變量從表中選擇。然後,我想記錄所選內容。有沒有辦法做到這一點,而不使用臨時表或表變量?記錄剛剛沒有臨時表時選擇的內容?

select語句:

Select userId, firstName, lastName, address 
from myTable 
where userName = @userName and password = @password 

然後,我要記錄中選定的用戶id,名字,姓氏和地址。所以:

Insert into loginLog...[results gotten above] 

注意:我只想記錄它,如果只有一個結果返回。如果返回多個結果,我仍然要選擇所有結果,但我不想記錄它。

+1

僅舉,OUTPUT子句將是有益的在這裏...但他們只補充說,在2005年SQL –

回答

2

使用您的select填充存儲過程中的局部變量。記錄結果,然後select變量將它們返回給調用者:

declare 
    @userID int   , 
    @firstName varchar(255) , 
    @lastName varchar(255) , 
    @address varchar(255) , 
    @rows  int 

select @userID = userId , 
     @firstName = firstName , 
     @lastName = lastName , 
     @address = address 
from myTable 
where ... 

set @rows = @@rowcount 

insert loginLog 
select @userID , @firstName , @lastName , @address 
where @rows > 0 

select userID = @userID , 
     firstName = @firstName , 
     lastName = @lastName , 
     address = @address 
where @rows > 0 
+0

這就是答案我正在打字。那麼,格式會有所不同,但這是關於所有... – AllenG

+0

我意識到我犯了一個錯誤,並可能有多個結果。只是如果有多個結果,我只想記錄它。鑑於此,您的答案不再有效...... – dmr

+0

然後,您被困在一張臨時表中。您可能會用SQL跟蹤來連接某些事物以捕獲所需的表格選擇,但性能下降會令人不快。 –