Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 存储过程_Sql_Stored Procedures - Fatal编程技术网

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()