Click here to Skip to main content
15,886,873 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi sir,

I am writing a single stored procedure for inserting and updating data into two tables. I am getting one error. Below is my code:

CREATE PROCEDURE sp_Emp_Save
(
 @Eno INT,
 @Ename VARCHAR(100),
 @JOb VARCHAR(100),
 @Gender CHAR(1),
 @Sno INT,
 @Sname VARCHAR(100)
)
 AS
   BEGIN
        IF NOT EXISTS (SELECT Ename,Job FROM EMP WHERE Eno = @Eno)
             INSERT INTO EMP (Eno,Ename,Job,Gender) VALUES (@Eno,@Ename,@Job,@Gender)
             INSERT INTO Class (Sno,Sname) VALUES (@Sno,@Sname)
        ELSE
             UPDATE EMP SET Ename = @Ename, Job = @Job, Gender = @Gender WHERE Eno = @Eno
             UPDATE CLASS SET Sname = @Sname WHERE Sno = @sno
     END

I am getting the below error:
Msg 156, Level 15, State 1, Procedure sp_Test_Save, Line 15
Incorrect syntax near the keyword 'ELSE'.


Please tell me sir, where was I writing wrong code? Please give me a solution for this.

Thanks.
Posted
Updated 21-Dec-10 22:03pm
v2
Comments
JF2015 22-Dec-10 4:03am    
Edited to fix spelling errors.

There is no BEGIN-END clause in your IF-ELSE.

Have a look at the following knowledgebase [^]with example.
 
Share this answer
 
Comments
ajay.raju531 22-Dec-10 4:25am    
Thank you
Dalek Dave 27-Dec-10 23:22pm    
Good Link.
CREATE PROCEDURE sp_Emp_Save
(
 @Eno INT,
 @Ename VARCHAR(100),
 @JOb VARCHAR(100),
 @Gender CHAR(1),
 @Sno INT,
 @Sname VARCHAR(100)
)
 AS
   BEGIN
        IF NOT EXISTS (SELECT Ename,Job FROM EMP WHERE Eno = @Eno)
          BEGIN
             INSERT INTO EMP (Eno,Ename,Job,Gender) VALUES (@Eno,@Ename,@Job,@Gender)
             INSERT INTO Class (Sno,Sname) VALUES (@Sno,@Sname)
          END
        ELSE
          BEGIN
             UPDATE EMP SET Ename = @Ename, Job = @Job, Gender = @Gender WHERE Eno = @Eno
             UPDATE CLASS SET Sname = @Sname WHERE Sno = @sno
          END
     END
 
Share this answer
 
Comments
ajay.raju531 22-Dec-10 4:25am    
Thank you
Dalek Dave 27-Dec-10 23:22pm    
Good Answer.
You need to add BEGIN END clause.

Try this,
SQL
BEGIN
        IF NOT EXISTS (SELECT Ename,Job FROM EMP WHERE Eno = @Eno)
           BEGIN
             INSERT INTO EMP (Eno,Ename,Job,Gender) VALUES (@Eno,@Ename,@Job,@Gender)
             INSERT INTO Class (Sno,Sname) VALUES (@Sno,@Sname)
           END
        ELSE
           BEGIN
             UPDATE EMP SET Ename = @Ename, Job = @Job, Gender = @Gender WHERE Eno = @Eno
             UPDATE CLASS SET Sname = @Sname WHERE Sno = @sno
           END
     END
 
Share this answer
 
SQL
BEGIN
        IF NOT EXISTS (SELECT Ename,Job FROM EMP WHERE Eno = @Eno)
           BEGIN
             INSERT INTO EMP (Eno,Ename,Job,Gender) VALUES (@Eno,@Ename,@Job,@Gender)
             INSERT INTO Class (Sno,Sname) VALUES (@Sno,@Sname)
           END
        ELSE
           BEGIN
             UPDATE EMP SET Ename = @Ename, Job = @Job, Gender = @Gender WHERE Eno = @Eno
             UPDATE CLASS SET Sname = @Sname WHERE Sno = @sno
           END
     END
 
Share this answer
 
hi, just u see the below link.. because, i already posted...

How to SELECT and UPDATE in one query using Different Tables in sql server?[^]

below the Code:
--------
SQL
IF  EXISTS  (SELECT 1   FROM    InsCarrier  WHERE   (InsCarrierId = @InsCarrierId))
        UPDATE  InsCarrier
        SET     UserId = @UserId,InsCarrierName=@InsCarrierName
        WHERE   (InsCarrierId = @InsCarrierId)
    ELSE
        INSERT  INTO    InsCarrier  (UserId,InsCarrierName)
                        VALUES      (@B2bUserId,@InsCarrierName
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900