2013-10-10 77 views
0

我有一個存儲過程,在自動遞增ID(名爲'requestid')的表上插入數據。當我使用該過程向其中插入數據時,我想獲取自動增量字段的值,並在另一個查詢中將其用於相同的存儲過程。我怎麼做?預先感謝您的時間。從SQL存儲過程共享自動增量值

CREATE PROCEDURE [dbo].[sp_Create_new_request] 
     @employeeid      INT     , 
     @requestdate     DATETIME    , 
     @deliverdate     DATETIME    , 
     @totalcost      MONEY     

AS 
BEGIN 


    INSERT INTO dbo.Requests 
      ( 
      EmployeeID     , 
      RequestDate     , 
      DeliverDate     , 
      TotalCost      

     ) 
    VALUES 
      ( 
      @employeeid     , 
      @requestdate     , 
      @deliverdate     , 
      @totalcost      

     ) 



END 

回答

0

您不應該使用自動增量,而是使用序列來增加,然後您可以在任何地方重複使用該值。

1

嘗試

CREATE PROCEDURE [dbo].[sp_Create_new_request] 
    @employeeid      INT     , 
    @requestdate     DATETIME    , 
    @deliverdate     DATETIME    , 
    @totalcost      MONEY, 
requestid    INT    = NULL OUT     

AS 
BEGIN 


INSERT INTO dbo.Requests 
     ( 
     EmployeeID     , 
     RequestDate     , 
     DeliverDate     , 
     TotalCost      

    ) 
VALUES 
     ( 
     @employeeid     , 
     @requestdate     , 
     @deliverdate     , 
     @totalcost      

    ) 

SET @requestid = SCOPE_IDENTITY(); 

END 
+0

能否請你添加一些解釋你的答案? – Thomas

+0

scope_identity將返回最後創建的身份,在這種情況下請求表中的請求ID。 – DrewbieDoo

-1

您還可以使用:

IDENT_CURRENT( 'dbo.Requests')

信息有關IDENT_CURRENT http://technet.microsoft.com/en-us/library/ms175098.aspx

+0

-1用於推薦非會話安全,當知道更好的替代方案時(即['SCOPE_IDENTITY()'](http://technet.microsoft.com/en-us/library/ms190315.aspx)) –