使用裸选择,我得到了正确的 ide
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
未经测试,但这可能有效:
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
这肯定会奏效:
drop PROCEDURE addLockDate
CREATE PROCEDURE addLockDate
AS
declare @iden table (pk int);
declare @outint int;
update top (1) lockDate with (UPDLOCK)
set dt = GETDATE()
output inserted.iden into @iden
where dt is null
set @outint = (select top (1) iden.pk
from @iden iden);
return @outint;
GO
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句