如何將結果集值設置爲局部變量或過程中的輸出參數..在sql中設置值
下面。
UPDATE TOP (1) certificate WITH (ROWLOCK,READPAST,UPDLOCK)
SET issued = 1
OUTPUT INSERTED.certid, INSERTED.certiname
WHERE issued = 0 AND year = 2011
如何將結果集值設置爲局部變量或過程中的輸出參數..在sql中設置值
下面。
UPDATE TOP (1) certificate WITH (ROWLOCK,READPAST,UPDLOCK)
SET issued = 1
OUTPUT INSERTED.certid, INSERTED.certiname
WHERE issued = 0 AND year = 2011
您可以定義一個表變量,以保持輸出:
DECLARE @OutputTable TABLE (CertID INT, CertiName VARCHAR(100)) -- adapt as needed
UPDATE TOP (1) certificate WITH (ROWLOCK,READPAST,UPDLOCK)
SET issued = 1
OUTPUT INSERTED.certid, INSERTED.certiname INTO @OutputTable
WHERE issued = 0 AND year = 2011
SELECT * FROM @OutputTable
,然後你可以從該表變量選擇從存儲過程返回的數據(或只是窺視它) 。
PS:WITH (UPDLOCK)
是絕對多餘的 - 任何UPDATE
聲明總是會採取更新鎖定......您可以完全忽略它。
既然你只是更新單列,試試這個:
DECLARE @certid INT
DECLARE @certinname VARCHAR(MAX) -- or whatever
UPDATE TOP (1) certificate WITH (ROWLOCK,READPAST)
SET issued = 1, @certid = certid, @certinname = certinname
WHERE issued = 0 AND year = 2011
SELECT @certid, @certinname
DECLARE @certid INT
DECLARE @certinname VARCHAR(MAX) -- or whatever
UPDATE TOP (1) certificate WITH (ROWLOCK,READPAST)
SET issued = 1, @certid = certid, @certinname = certinname
WHERE issued = 0 AND year = 2011
SELECT @certid, @certinname
thanx的幫助... – 2012-01-03 11:24:28