'SQL Server - Incorrect syntax near ELSE [closed]
I'm having a problem with my SQL code for tickets orders, everything was working, until I added those UPDATE statements. After I added UPDATE statements every ELSE is being underlined with definition Incorrect syntax near ELSE. Is there anything bad with the code syntax itself or could the update statements be made by trigger? I'd be glad if anyone helped:)
CREATE PROCEDURE ObjednaniVstupenek(@pocetNormal int, @pocetVip int, @akceID int, @email nvarchar(50))
AS
BEGIN
IF EXISTS(SELECT TOP (@pocetVip) * FROM Vstupenky WHERE Platna = 0 AND Verze = 'VIP')
IF EXISTS(SELECT TOP (@pocetNormal) * FROM Vstupenky WHERE Platna = 0 AND Verze = 'normal')
IF EXISTS(SELECT * FROM Zakaznici WHERE Email = @email)
IF EXISTS(SELECT * FROM Akce WHERE AkceID = @akceID)
INSERT INTO Objednavky(Zaplaceno, ZakazniciID)
VALUES(1, (SELECT ZakazniciID FROM Zakaznici WHERE Email=@email))
UPDATE Vstupenky
SET ObjednavkyID = SCOPE_IDENTITY(), Platna = 1
WHERE Platna = 0 AND Verze = 'VIP' AND VstupenkyID in
(
select top (@pocetVip) * from Vstupenky
)
UPDATE Vstupenky
SET ObjednavkyID = SCOPE_IDENTITY(), Platna = 1
WHERE Platna = 0 AND Verze = 'normal' AND VstupenkyID in
(
select top (@pocetNormal) * from Vstupenky
)
ELSE
PRINT 'Taková akce neexistuje'
ELSE
PRINT 'Takový email není zaregistrovaný. Prosím, nejdřív se registrujte.'
ELSE
PRINT 'Není dostatek normálních vstupenek'
ELSE
PRINT 'Není dostatek VIP vstupenek'
END
Thank you for any help
Solution 1:[1]
If statements need begin/end if they "contain" more than 1 SQL statements.
This should work:
CREATE PROCEDURE ObjednaniVstupenek(@pocetNormal int, @pocetVip int, @akceID int, @email nvarchar(50))
AS
BEGIN
IF EXISTS(SELECT TOP (@pocetVip) * FROM Vstupenky WHERE Platna = 0 AND Verze = 'VIP')
IF EXISTS(SELECT TOP (@pocetNormal) * FROM Vstupenky WHERE Platna = 0 AND Verze = 'normal')
IF EXISTS(SELECT * FROM Zakaznici WHERE Email = @email)
IF EXISTS(SELECT * FROM Akce WHERE AkceID = @akceID)
begin
INSERT INTO Objednavky(Zaplaceno, ZakazniciID)
VALUES(1, (SELECT ZakazniciID FROM Zakaznici WHERE Email=@email))
UPDATE Vstupenky
SET ObjednavkyID = SCOPE_IDENTITY(), Platna = 1
WHERE Platna = 0 AND Verze = 'VIP' AND VstupenkyID in
(
select top (@pocetVip) * from Vstupenky
)
UPDATE Vstupenky
SET ObjednavkyID = SCOPE_IDENTITY(), Platna = 1
WHERE Platna = 0 AND Verze = 'normal' AND VstupenkyID in
(
select top (@pocetNormal) * from Vstupenky
)
end
ELSE
PRINT 'Taková akce neexistuje'
ELSE
PRINT 'Takový email není zaregistrovaný. Prosím, nejd?ív se registrujte.'
ELSE
PRINT 'Není dostatek normálních vstupenek'
ELSE
PRINT 'Není dostatek VIP vstupenek'
END
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Eduard Uta |
