Avatar billede simsen Mester
10. marts 2008 - 13:39 Der er 3 kommentarer og
1 løsning

Indsætte i flere tabeller i en Stored Procedure

Hej,

Jeg har en database (MS SQL 2005), hvor jeg når jeg opretter en bruger, skal oprette denne bruger i forskellige tabeller:

tBruger
tMedlemsskab
tRoller

Jeg er ikke helt klar over hvordan jeg skal få det lavet. For den første indsættelse, skal gerne returnere den nyoprettede brugerId, som jeg så skal bruge når jeg opretter brugeren i de andre tabeller

Altså jeg ved godt, hvordan den kan returnere værdien - men hvordan bruger jeg værdien så når jeg laver min næste insert i samme stored procedures?

Det jeg har på nuværende tidspunkt:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[tBruger]
    @ApplicationId    uniqueidentifier,
    @UserName        nvarchar(256),
    @IsUserAnonymous  bit,
    @LastActivityDate DATETIME,
    @UserId          uniqueidentifier OUTPUT
AS
BEGIN
    IF( @UserId IS NULL )
        SELECT @UserId = NEWID()
    ELSE
    BEGIN
        IF( EXISTS( SELECT UserId FROM dbo.aspnet_Users
                    WHERE @UserId = UserId ) )
            RETURN -1
    END

    INSERT dbo.tBruger (ApplicationId, UserId, UserName, LoweredUserName, IsAnonymous, LastActivityDate)
    VALUES (@ApplicationId, @UserId, @UserName, LOWER(@UserName), @IsUserAnonymous, @LastActivityDate)

    RETURN 0
END

Nu vil jeg så have indsat i næste tabel tMedlemsskab, hvor den skal sætte @UserId ind og f.eks. et @Gruppe

Hvordan sætter jeg disse to felter ind i tMedlemsskab, altså i samme StoredProcedure?

mvh
simsen :-)
Avatar billede arne_v Ekspert
10. marts 2008 - 13:59 #1
Med den kode der laver du vel bare nogle flere INSERT og @UserId kan jo genbruges
uden problemer - havde du brugt identity column skulle du have bruget SCOPE_IDENTITY() ...
Avatar billede arne_v Ekspert
06. april 2008 - 06:05 #2
kommet videre ?
Avatar billede simsen Mester
23. april 2008 - 14:07 #3
Hejsa arne....

Jow jeg er kommet meget videre og retur igen........Det er en forglemmelse fra min side, jeg ikke har fået bedt dig om et svar.....

Håber du hænger på stadig og smider et svar - tak for hjælpen igen igen :-)

mvh
simsen
Avatar billede arne_v Ekspert
23. april 2008 - 14:50 #4
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester