从SQL存储过程共享自动增量值

时间:2013-10-10 11:03:01

标签: sql stored-procedures

我有一个存储过程,它在具有自动增量ID(名称为'requestid')的表上插入数据。当我使用该过程将数据插入其中时,我想获取自动增量字段的值并将其用于对同一存储过程的另一个查询。我怎么做?提前感谢您的时间。

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 

3 个答案:

答案 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 

答案 1 :(得分:0)

您不应该使用自动增量而是使用序列来递增,然后您可以在任何地方重复使用该值。

答案 2 :(得分:-1)

您也可以使用:

IDENT_CURRENT('dbo.Requests')

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