我想创建一个存储过程来检索指定表的最后一个IDENTITY。以下是我到目前为止所做的工作。
CREATE PROCEDRE spGetLast
AS
BEGIN
SELECT id
FROM users
WHERE ID = IDENT_CURRENT('users')
SELECT id as returnvalue
END
答案 0 :(得分:0)
你的方式应该有用。
不确定你为什么问,但这里有一点更新的proc(你也可以使用函数代替proc):
CREATE PROC dbo.spGetLast
AS
BEGIN
DECLARE @ret int;
SELECT @ret = ID
FROM users
WHERE ID = IDENT_CURRENT('users');
IF (@ret IS NULL)
SET @ret = 0;
RETURN @ret;
END;
这是用法:
DECLARE @SelectedValue INT
EXEC @SelectedValue = dbo.spGetLast
SELECT @SelectedValue
答案 1 :(得分:0)
您可以简化它,只需执行以下操作,因为您没有使用output parameter:
SELECT IDENT_CURRENT('users')
这必须在代码中处理,以期对存储过程的调用返回单个值。
否则你应该像output parameter这样使用:
CREATE PROCEDURE spGetLast
@LastUserId int OUTPUT
AS
BEGIN
SELECT @LastUserId = IDENT_CURRENT('users')
RETURN
END