-1
這是我現在有,但我仍然收到錯誤:打開此查詢到光標
消息16916,級別16,狀態1,239線 名爲「sumCurSalaryActiveEmps」確實光標不存在。
Msg 16917,Level 16,State 2,Line 258 光標未打開。
消息16916,級別16,狀態1,行266 名稱爲'sumCurSalaryActiveEmps'的遊標不存在。
消息16916,級別16,狀態1,行267 名稱爲'sumCurSalaryActiveEmps'的遊標不存在。
DECLARE @sumCurSal decimal(10,2)
DECLARE sumCurSalaryActiveEmp CURSOR Local FAST_FORWARD FOR
SELECT
SUM(Salary.Emp_Salary) AS 'Sum of All Current Salaries'
FROM
(
SELECT
MAX(Emp_Salary_Change_Year) AS "Change Year"
FROM Employee_Details AS e
INNER JOIN Country AS co ON e.Emp_Country_Id = co.Country_Id
INNER JOIN State AS s ON e.Emp_State_Id = s.State_Id
INNER JOIN Designation AS d ON e.Desig_Id = d.Desig_Id
INNER JOIN Salary AS sa ON e.Emp_Id = sa.Emp_Id
WHERE Emp_Active = 1
GROUP BY Emp_First_Name, Emp_Last_Name,
Emp_Middle_Name, Country_Name, Desig_Name) AS C
INNER JOIN Salary ON C.[Change Year] = Salary.Emp_Salary_Change_Year
OPEN sumCurSalaryActiveEmps
Fetch NEXT FROM sumCurSalaryActiveEmp
INTO @sumCurSal
WHILE @@FETCH_STATUS = 0
BEGIN
Fetch NEXT FROM sumCurSalaryActiveEmps
INTO @sumCurSal
END
close sumCurSalaryActiveEmps
Deallocate sumCurSalaryActiveEmps
你應該**不惜一切代價避免遊標 - 不學會創建和使用它們! –
你想達到什麼目的?看起來你只會得到1行。所有工資總和。你爲什麼需要光標? –
Sql Server不是oracle。不要在99.99999%的時間內使用遊標。你應該讀作「我不應該使用遊標」。忘記你甚至發現這篇文章:http://www.dotnettricks.com/learn/sqlserver/sql-server-basics-of-cursors – granadaCoder