2011-04-26 172 views
2

我有一個存儲過程,將用戶插入表中,但我希望輸出值等於表中新插入的UserID,但我不知道該怎麼做,你們能幫助我嗎?存儲過程

我有這個

ALTER PROCEDURE dbo.st_Insert_User 
(
@Nombre varchar(200), 
@Usuario varchar(100), 
@Password varchar(100), 
@Administrador bit, 
@Resultado int output 
) 
AS 
INSERT INTO tbl_Users(Nombre, Usuario, Password, Administrador) 
VALUES(@Nombre, @Usuario, @Password, @Administrador) 

    SELECT @resultado = UserID 

我也試過

SELECT @resultado = UserID FROM tbl_Users WHERE Usuario = @Usuario 

回答

0

在末尾加上

選擇@@身份

+1

'@@ identity'不應該被用在這裏。 'scope_identity()'是正確的使用方法,因爲如果觸發器被添加到插入到具有'identity'列的另一個表的表中,觸發器不會突然中斷。 – 2011-04-26 22:19:05

+0

謝謝,沒有意識到。 – 2011-04-26 22:19:49

3
SELECT SCOPE_IDENTITY() 

會給你行的標識

+0

非常感謝你 – 2011-04-26 22:29:21

3

對於SQL Server,您希望使用OUTPUT子句。請參閱Books Online的信息和示例。它確實涵蓋了你的情況 - 就像它提到的那樣:「在INSERT或UPDATE操作之後,OUTPUT子句可能有助於檢索身份或計算列的值。」

(如果這是真實的世界而言,你當然得在保存密碼時,你應該解決安全問題。)

+0

嗨,很高興在這裏見到你! – 2011-04-26 22:36:16

+0

謝謝,它看起來很有趣:) – kendra 2011-04-26 22:59:00