2017-03-24 4 views
0

次のコードでWHERE句の構文エラーが発生します。 問題が何ですか?ストアドプロシージャでWHEREを使用する

CREATE PROC spIncreaseHours 
(@ID int, @HoursPerWeek DEC, @HourlyRate INT) 
AS 
INSERT INTO Payments 
Values (@HoursPerWeek, @HourlyRate) 
WHERE ID = @ID; 
+3

これは何をする予定ですか? 'INSERT'で' WHERE'を使うことはできません – DavidG

+0

与えられたIDの行にHoursPerWeekとHourlyRateを挿入します。 –

+0

IDを挿入してください – DavidG

答えて

3

あなたはおそらく更新する:

CREATE PROC spIncreaseHours 
(@ID int, @HoursPerWeek DEC, @HourlyRate INT) 
AS 
UPDATE Payments set 
HoursPerWeek = @HoursPerWeek, 
HourlyRate = @HourlyRate 
WHERE ID = @ID; 
1

あなたはINSERTWHEREを使用することはできません。新しい行を挿入するか、既存の行を更新するかのどちらかです。

CREATE PROC spIncreaseHours 
(@ID int, @HoursPerWeek DEC, @HourlyRate INT) 
AS 
INSERT INTO Payments 
Values (@ID, @HoursPerWeek, @HourlyRate); 

またはUPDATE:たとえばINSERTのために当然のことながら

CREATE PROC spIncreaseHours 
(@ID int, @HoursPerWeek DEC, @HourlyRate INT) 
AS 
UPDATE Payments 
SET HoursPerWeek = @HoursPerWeek, 
    HourlyRate = @HourlyRate 
WHERE ID = @ID; 

、そこ@IDの行が既に存在するかどうかわからない第三の可能性もあるので、あなたがチェックを行うことができます最初:

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); 
関連する問題