Hej! Du kan se om det här hjälper: Som vanligt Andreas så tackar jag för hjälpen. Funkade perfekt och jag ser vad du har ändrat, lagt tillVad är fel på denna procedur
Jag har en SP som inte vill fungerar. Det som händer är att den inte skriver ner alla värderna i databasen
Själva funktionen är så att jag skapar en tävling där man skall ange sitt namn och epost adress. Sedan skall man ange 6 st epostadresser till som det skall skickas ut en inbjudan till tävlingen. ALla adresser skall sparas ner i en tabell oc detta har jag löst med nedan SP.
Så är skall SP fungera
1. I vanlig ordning tar den in variablarna
2. Sedan deklarerar jag några egna variablar som skall verka inom proceduren
3. Sedan sätter jag NewID till en Guid och skapar den
4. Sedan gör jag en sökning i huvudtabellen om det finns någon post med angiven epostadress redan sparad. detta för att förhindra dubletter. Värderna för sökning sparar jag i @ID oc i @tmpEmail
5. Sedan gör jag en kontroll om ID är tomt (NULL) skall avsändaren av mailet sparas ner i huvudtabellen annars skall ID numret användas för att spara ner de 6 adresserna till en skundärtabell där ID är kopplingen mellan dem. Detta görs med att @NEWID sätts till @ID, dvs det hittade id i huvudtabellen
6. Sedan sparas alla de 6 mailen ner i sekundärtabellen
7. Sedan skall avsändaren uppdateras i huvudtabellen så att statistik lagras på honom för utvärdering.
Fel som finns:
I huvudtabelln sparas inget ner och det finns inga poster i den tabellen. Så om IF satsen fungerat skulle användaren sparas ner i huvudtabellen.
I skundärtabellen sparas bara epostadresserna ner. Inget ID från användaren lagras.
Hoppas att ni kan utläsa vad jag vill ha gjort och hur det skall fungera.
<code>
ALTER Procedure AddContest
-- Parametrar
@SendName varchar(50),
@sendMail varchar(50),
@Email1 varchar(100),
@Email2 varchar(100),
@Email3 varchar(100),
@Email4 varchar(100),
@Email5 varchar(100),
@Email6 varchar(100)
AS
SET NOCOUNT ON
-- Deklarerar variablerna
Declare @ID uniqueidentifier
Declare @EID uniqueidentifier
Declare @tmpEmail Varchar(100)
Declare @NewID uniqueidentifier
-- Skapar ett nytt ID
SET @NewID = NEWID()
-- Kontrollerar om avsändaren redan finns annars skapas en ny.
Select @ID = ID, @tmpEmail = Email from tbl_Contest where email= @sendMail
-- Om användaren inte finns så skapas han, annars sätts hans id med @NewID
IF @ID = Null
BEGIN
Insert into tbl_Contest (ID, Name, email, regtime, NrOfAdress, nrOfSends)
values (@NewID, @SendName,@sendMail,GETDATE(),0,0)
END
SET @NewID = @ID
-- Första mailet --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@NewID,@Email1)
-- Andra --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@NewID,@Email2)
-- Tredje --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@NewID,@Email3)
-- Fjärde --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@NewID,@Email4)
-- Femte --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@NewID,@Email5)
-- Sjätte --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@NewID,@Email6)
-- Uppdaterar använadren med antalet skickade mail
UPDATE tbl_Contest Set NrOfAdress = NrOfAdress + 6, nrOfSends = nrOfSends + 1 WHERE ID = @NewID
</code>
/tyronneSv: Vad är fel på denna procedur
<code>
ALTER Procedure AddContest
-- Parametrar
@SendName varchar(50),
@sendMail varchar(50),
@Email1 varchar(100),
@Email2 varchar(100),
@Email3 varchar(100),
@Email4 varchar(100),
@Email5 varchar(100),
@Email6 varchar(100)
AS
SET NOCOUNT ON
-- Deklarerar variablerna
Declare @ID uniqueidentifier
Declare @EID uniqueidentifier
Declare @NewID uniqueidentifier
SET @ID = NULL
-- Kontrollerar om avsändaren redan finns.
SELECT @ID = ID
FROM tbl_Contest
WHERE email= @sendMail
-- Om användaren inte finns så skapas han, hans id sätts till @NewID
IF (@ID IS Null)
BEGIN
-- Skapar ett nytt ID
SET @NewID = NEWID()
INSERT INTO tbl_Contest (ID, Name, email, regtime, NrOfAdress, nrOfSends)
VALUES (@NewID, @SendName,@sendMail,GETDATE(),0,0)
SET @ID = @NewID
END
-- Första mailet --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@ID,@Email1)
-- Andra --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@ID,@Email2)
-- Tredje --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@ID,@Email3)
-- Fjärde --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@ID,@Email4)
-- Femte --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@ID,@Email5)
-- Sjätte --
INSERT INTO tbl_Contest_Data (ID,Email)
VALUES (@ID,@Email6)
-- Uppdaterar använadren med antalet skickade mail
UPDATE tbl_Contest SET NrOfAdress = NrOfAdress + 6, nrOfSends = nrOfSends + 1
WHERE ID = @ID
</code>Sv:Vad är fel på denna procedur
/tyronne