私の給料を更新したい。例えばカーソルの作成に固執
私は、ストアドプロシージャを試した後@sex =「F」の後、Fが他に更新されますセックスを持っている唯一の従業員が
ALTER procedure spEmployeeJamKerja (@sex varchar(1))
AS
BEGIN
SET NOCOUNT ON
DECLARE @temp int
DECLARE @fname nvarchar(20)
DECLARE femaleEmpCursor CURSOR FOR
SELECT e.fname, SUM(W.hours) AS TOTAL
FROM employee e, works_on w
WHERE e.sex = @sex AND e.ssn = W.ssn
GROUP BY e.ssn,e.fname
OPEN femaleEmpCursor
FETCH NEXT FROM femaleEmpCursor INTO @fname, @temp
WHILE @@FETCH_STATUS = 0
BEGIN
IF(@temp > 20)
BEGIN
UPDATE employee
SET salary = salary + (@temp*5)
WHERE sex = @sex
END
ELSE IF (@temp <= 20)
BEGIN
UPDATE employee
SET salary = salary + ((@temp-1)*4)
WHERE sex = @sex
END
END
END
CLOSE femaleEmpCursor;
DEALLOCATE femaleEmpCursor;
前と同じである場合、クエリが停止したことがありません、無限ループのように。これを解決するための提案はありますか?
これにはいくつか問題がありますが、どうしてこのような理由で「カーソル」を使用するのですか? – Lamak
各従業員の勤務時間が異なるので、私はDB @Lamak – Student
のすべての従業員の給与を更新するためにこれを使用します。カーソルは完全には不要です。更新で従業員名を使用していないこともわかります。毎回その性別の一人の従業員(これは正しい方法ですが、カーソルは全くありません) – Lamak