SQL - 获取更新的值

时间:2011-07-25 15:33:16

标签: sql sql-server stored-procedures

我使用的是Sql Server 2008。

我有一个生成ID的表。 我想检索生成的ID并将其存储在bigint变量中。 我该怎么办?

以下是存储过程,它将ID作为结果集。但是我无法将它存储在bigint变量中。

ALTER PROC SCN.TRANSACTION_UNIQUE_ID_SELECT
AS

UPDATE COR.TRANSACTION_UNIQUE_ID
SET ID = ID + 1

OUTPUT INSERTED.ID AS ID

5 个答案:

答案 0 :(得分:3)

如果您想使用output,可以;

declare @ID table (ID bigint)

update the_table
  set ID = ID + 1
output INSERTED.ID into @ID

declare @bi bigint = (select ID from @ID)

答案 1 :(得分:2)

BigInt应该是一个标识插入列,这将使SQL Server自动为您生成bigints。只需将rowID作为OUTPUT参数传递,并在插入/更新后的过程结束之前设置它。

然后你可以阅读它并根据需要进行设置。

存储过程看起来像这样(为了清楚起见,我只包含了rowID):

CREATE PROCEDURE [Sample].[Save] 
    (

     @rowID bigint OUTPUT

    )
AS
BEGIN

 SET NOCOUNT ON

 --Do your insert/update here


 --Set the RowID
 SET @rowID = (SELECT SCOPE_IDENTITY())

 END

答案 2 :(得分:0)

UPDATE看起来很可疑......它会使你桌子中的ID每增加一个,不是吗?

无论如何,变量都有@sign,所以只有SET @myvar = ...whatever...

答案 3 :(得分:0)

使用OUTPUT INTO

DECLARE @TblID TABLE ( ID int )

UPDATE COR.TRANSACTION_UNIQUE_ID
SET ID = ID + 1
OUTPUT INSERTED.ID INTO @TblID (ID) --the output values will be inserted 
                                    --into @TblID table-variable

答案 4 :(得分:-1)

DECLARE @id BIGINT
EXEC @id = SCN.TRANSACTION_UNIQUE_ID_SELECT