-1
にこのクエリを回す:は、これは私が今持っているものですが、私はまだエラーを受け付けておりますカーソル
メッセージ16916、レベル16、状態1、行239 名でカーソルを「sumCurSalaryActiveEmps」ん存在しない。
メッセージ16917、レベル16、状態2、行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