Avatar billede ml Nybegynder
15. september 2006 - 13:16 Der er 5 kommentarer

INSERT værdi fra SELECT i samme Stored Procedure

Hvordan sætter jeg en værdi fra en SELECT ind i en INSERT i samme Stored Procedure?

I følgende, vil jeg gerne have sat OrderByMAX fra SELECT ind som OrderBy i INSERT.


ALTER PROCEDURE [dbo].[ShopMenuItemInsert]

    (
    @SubMenuToMenuItemID    int        = 0,
    @OrderBy                int        = 1,
    @MenuIcon                varchar(32),
    @Active                    int        = 1,
    )

AS

SELECT    MAX(OrderBy) + 1 AS OrderByMAX
FROM        ShopMenuItem
WHERE    (SubMenuToMenuItemID = @SubMenuToMenuItemID)

INSERT INTO ShopMenuItem
                      (OrderBy, MenuIcon, Active, SubMenuToMenuItemID)
VALUES    (@OrderBy,@MenuIcon,@Active,@SubMenuToMenuItemID)

    RETURN
Avatar billede arne_v Ekspert
15. september 2006 - 13:20 #1
prøv:

INSERT INTO ShopMenuItem (OrderBy, MenuIcon, Active, SubMenuToMenuItemID)
SELECT    MAX(OrderBy) + 1 AS OrderByMAX,@MenuIcon,@Active,@SubMenuToMenuItemID
FROM        ShopMenuItem
WHERE    (SubMenuToMenuItemID = @SubMenuToMenuItemID)
Avatar billede arne_v Ekspert
15. september 2006 - 13:20 #2
og så er det 99.9% sikkert at noget logik med MAX()+1 er forkert !!!!
Avatar billede ml Nybegynder
15. september 2006 - 13:21 #3
Fandt selv løsningen. Men skal bare bruge følgende SELECT:

SELECT    @OrderBy = MAX(OrderBy) + 1
FROM        ShopMenuItem
WHERE    (SubMenuToMenuItemID = @SubMenuToMenuItemID)
Avatar billede ml Nybegynder
15. september 2006 - 13:22 #4
Så ikke din kommentar før jeg selv postede et svar. Din virker sikkert også, så lav en svar så får du halvdelen :)
Avatar billede arne_v Ekspert
15. september 2006 - 13:31 #5
næ tak

jeg vil heller se om om vi kan finde en anden løsning en MAX()+1

som ikke er god hvis flere samtidige brugere (medmindre der er gjordt noget særligt)
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