Avatar billede bmdk Nybegynder
01. december 2008 - 22:18 Der er 8 kommentarer og
1 løsning

Hjælp til stored procedure

Hey eksperten,

Jeg er i gang med at lave en stored procedure, som skal sørge for at der bliver indsat data i to forskellige tabeller "på samme tid"

Min stored procedure ser sådan ud:

ALTER PROCEDURE dbo.InsertWish
(
    @Name varchar(100),
    @Price int,
    @Seen varchar(100),
    @Color varchar(100),
    @Date varchar(100),   
    @WishlistId int
)
AS

SET NOCOUNT ON;


INSERT INTO
    Wish(Name, Price, Seen, Color, Date)
   
VALUES(@Name, @Price, @Seen, @Color, @Date)

DECLARE @WishId int

SET @WishId = (SELECT Id FROM Wish WHERE Name = @Name)

INSERT INTO
    Wishlist_Wish(WishlistId, WishId)
   
VALUES(@WishListId, @WishId)


Det skal lige siges, at det er første gang jeg roder med SP! Så bær over med mig hvis I kan ;)

Jeg får den fejl, at den ikke kan sætte NULL ind som værdi i Id i min Wish tabel (hvilket jo er klart nok den ikke kan)

Hvordan får man sin SP til at fatte, at det Id bliver talt op automatisk når der bliver sat noget ind i Wish tabellen?

På forhånd tak for hjælpen.

Med venlig hilsen,

Bo
Avatar billede arne_v Ekspert
01. december 2008 - 22:24 #1
wish.id skal vaere en IDENTITY kolonne
Avatar billede arne_v Ekspert
01. december 2008 - 22:25 #2
Ioevrigt maa du kunne:

INSERT INTO Wish(Name, Price, Seen, Color, Date) VALUES(@Name, @Price, @Seen, @Color, @Date)

INSERT INTO Wishlist_Wish(WishlistId, WishId) VALUES(@WishListId, SCOPE_IDENTITY())
Avatar billede bmdk Nybegynder
01. december 2008 - 22:30 #3
Hey arne_v,

Hmm, jeg er ikke helt 100 på hvad du mener ;) men jeg prøvede med:

DECLARE @WishId int

SET @WishId = (SELECT @@IDENTITY FROM Wish WHERE Name = @Name)

Men stadig samme problem. Jeg har nok misforstået/ikke fattet hvad du mente med det :)
Avatar billede bmdk Nybegynder
01. december 2008 - 22:32 #4
Uden lige at have prøvet dit sidste forslag, så tror jeg ikke det vil virke.

Min pointe med SPen er, at den skal først sætte noget i min Wish tabel og derefter skal den tage det, den lige har sat ind's Id og sætte ind i Wishlist_Wish tabellen.

Håber det giver mening :) det er en mange-til-mange relation jeg har mellem to tabeller, så jeg har oprettet en ny tabel til at kæde dem sammen.
Avatar billede arne_v Ekspert
01. december 2008 - 22:39 #5
IDENTITY er en egenskab ved kolonnen i tabellen - ikke noget der skal laves i din SP
Avatar billede arne_v Ekspert
01. december 2008 - 22:40 #6
SCOPE_IDENTITY() henter den sidst genererede identity, saa det boer virke.
Avatar billede bmdk Nybegynder
01. december 2008 - 22:42 #7
DOH!! Ja selvfølgelig! Hvor er det tåbeligt hehe ;) det der alzheimers du ved.. Havde glemt at sætte den til identity i db'en.

Tusind tak for hjælpe! :) smider du lige et svar?
Avatar billede arne_v Ekspert
01. december 2008 - 23:10 #8
svar
Avatar billede bmdk Nybegynder
01. december 2008 - 23:12 #9
således!

tak igen :)
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