Reputation: 640
I'm getting a syntax error for the WHERE clause in the following code. Whats the problem?
CREATE PROC spIncreaseHours
(@ID int, @HoursPerWeek DEC, @HourlyRate INT)
AS
INSERT INTO Payments
Values (@HoursPerWeek, @HourlyRate)
WHERE ID = @ID;
Upvotes: 0
Views: 40
Reputation: 118937
You cannot use WHERE
with an INSERT
. You either want to be inserting a new row, or updating an existing one. For example INSERT
:
CREATE PROC spIncreaseHours
(@ID int, @HoursPerWeek DEC, @HourlyRate INT)
AS
INSERT INTO Payments
Values (@ID, @HoursPerWeek, @HourlyRate);
Or UPDATE
:
CREATE PROC spIncreaseHours
(@ID int, @HoursPerWeek DEC, @HourlyRate INT)
AS
UPDATE Payments
SET HoursPerWeek = @HoursPerWeek,
HourlyRate = @HourlyRate
WHERE ID = @ID;
Of course, there is also a third possibility where you don't know if a row for @ID
already exists, so you can do a check first:
CREATE PROC spIncreaseHours
(@ID int, @HoursPerWeek DEC, @HourlyRate INT)
AS
IF EXISTS (SELECT ID FROM Payments WHERE ID = @ID)
UPDATE Payments
SET HoursPerWeek = @HoursPerWeek,
HourlyRate = @HourlyRate
WHERE ID = @ID;
ELSE
INSERT INTO Payments
Values (@ID, @HoursPerWeek, @HourlyRate);
Upvotes: 1
Reputation: 2760
You probably want to UPDATE:
CREATE PROC spIncreaseHours
(@ID int, @HoursPerWeek DEC, @HourlyRate INT)
AS
UPDATE Payments set
HoursPerWeek = @HoursPerWeek,
HourlyRate = @HourlyRate
WHERE ID = @ID;
Upvotes: 3