【发布时间】:2018-04-16 14:16:13
【问题描述】:
通过裸选择,我得到了正确的身份
declare @iden table (pk int);
update top (1) lockDate with (UPDLOCK)
set dt = GETDATE()
output inserted.iden into @iden
where dt is null
select top (1) iden.pk
from @iden iden;
当我尝试将它放入存储过程时,我总是得到一个 0。
你知道我做错了什么吗?
DROP PROCEDURE addLockDate
CREATE PROCEDURE addLockDate
AS
DECLARE @iden TABLE (pk INT);
UPDATE TOP (1) lockDate WITH (UPDLOCK)
SET dt = GETDATE()
OUTPUT inserted.iden INTO @iden
WHERE dt IS NULL
RETURN SELECT TOP (1) iden.pk
FROM @iden iden
GO
【问题讨论】:
-
尝试将最终的 SELECT 放在括号中?或者使用中间变量。
-
更新top 1???
-
@SeanLange 是的,这就是我想要做的
-
从程序中去掉“return”
-
这甚至是有效的语法吗?它如何知道要更新哪一行?它需要一个我猜在更新语句中无效的顺序。对我来说,这里似乎有些不对劲。
标签: sql-server tsql stored-procedures