2013-01-16 55 views
0

我正在嘗試編寫一個存儲過程,將新用戶(NonMembers表)的詳細信息寫入數據庫,然後在該代碼的下一部分中使用該用戶的自動生成的ID將該用戶註冊給競爭對手(註冊表)。我這樣做的嘗試如下,但顯然我的SQL技能距離他們需要的地方很遠?如何編寫需要創建id的存儲過程,然後在相同的過程中使用它?

所有幫助將不勝感激。

ALTER PROCEDURE [dbo].[RegisterNonMember] 
    @CompetitionId INTEGER, 
    @IsMember BIT, 
    @FirstName NVARCHAR(50), 
    @Surname NVARCHAR(50), 
    @Handicap INTEGER, 
    @Club NVARCHAR(50), 
    @CountyId INTEGER, 
    @CountryId INTEGER, 
    @PlayersStartTime TIME 

AS 
BEGIN 

DECLARE @NonMember TABLE 
    (NonMemberId INTEGER, 
    FirstName NVARCHAR(50), 
    Surname NVARCHAR(50), 
    Handicap INTEGER, 
    Club NVARCHAR(50), 
    CountyId INTEGER, 
    CountryId INTEGER 
) 
INSERT INTO [dbo].[NonMembers] 
      (
      FirstName 
      ,Surname 
      ,[Handicap] 
      ,[Club] 
      ,CountyId 
      ,CountryId  
) 
    VALUES 
      (@FirstName 
      ,@Surname 
      ,@Handicap 
      ,@Club 
      ,@CountyId 
      ,@CountryId 
      ) 

--UPDATE @NonMember 
--SET  [@NonMember].NonMemberId = [dbo].[NonMembers].[NonMemberId] 
--FROM [dbo].[NonMembers] 
--JOIN @NonMember ON [@NonMember].NonMemberId = [dbo].[NonMembers].[NonMemberId] 
--WHERE @NonMember.FirstName = [dbo].[NonMembers].[FirstName] 
--AND  @NonMember.Surname = [dbo].[NonMembers].[Surname] 
--AND  @NonMember.Handicap = [dbo].[NonMembers].[Handicap] 
--AND  @NonMember.Club = [dbo].[NonMembers].[Club] 

DECLARE @Registration TABLE 
    (CompetitionId INTEGER, 
    IsMember BIT, 
    NonMemberId INTEGER, 
    PlayersStartTime TIME 
    ) 

INSERT INTO [dbo].[Registration] 
      (
      [CompetitionId] 
      ,[IsMember] 
      ,[NonMemberId] 
      ,[PlayersStartTime]) 
    VALUES 
      (@CompetitionId 
      ,@IsMember 
      ,@NonMemberId 
      ,@PlayersStartTime) 
END 
+0

RDBMS是什麼?我猜sql server? – twoleggedhorse

+0

我覺得'觸發器'是這裏使用的最佳選擇。 –

+2

沒辦法!只需要@@身份或更好,但scope_identity()。爲此,遠離觸發器。 – twoleggedhorse

回答

3

INSERT後添加:

DECLARE @UserID INT 
SELECT @UserID = SCOPE_IDENTITY() 
+0

非常好,謝謝。 – gallie