Sql 存储过程
我有一个将用户插入到表中的存储过程,但我希望输出值等于表中新插入的Sql 存储过程,sql,stored-procedures,Sql,Stored Procedures,我有一个将用户插入到表中的存储过程,但我希望输出值等于表中新插入的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, Usuari
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
将为您提供最后添加的行的标识
选择@Identity对于SQL Server,您要使用OUTPUT子句。请参阅此处的信息和示例。它确实涵盖了您的情况——正如它所提到的“OUTPUT子句在INSERT或UPDATE操作后检索identity或computed列的值可能很有用。”
(如果这是出于实际目的,那么在存储应该处理的密码时,您当然会有安全问题。)
@@identity
不应在此处使用scope_identity()
是正确的用法,因为如果将触发器添加到插入到另一个具有identity
列的表中,它不会突然中断。
SELECT SCOPE_IDENTITY()