我使用的是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
答案 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