I would like to understand the difference between these different code snippets in SQL Server and also would like to know which one performs well in PROD bulk updates Scenario...Please check and advice...Thank you in advance for your time and valuable inputs in this regard.
Snippet 1 :
DECLARE @EmpID
DECLARE C_XML2 CURSOR LOCAL FOR SELECT emp_code FROM r5employees WHERE emp_status = 'A'
AND emp_class = 'EMP' AND emp_location IS NULL FOR UPDATE
BEGIN
OPEN C_XML2
FETCH NEXT FROM C_XML2 into @EmpID
WHILE @@FETCH_STATUS =0
BEGIN
UPDATE r5employees SET emp_status = 'NA' WHERE emp_status = 'A'
AND emp_class = 'EMP' AND emp_location IS NULL AND emp_code = @EmpID
FETCH NEXT FROM C_XML2 into @EmpID
END
CLOSE C_XML2
DEALLOCATE C_XML2
END
Snippet 2
DECLARE @EmpID
DECLARE C_XML2 CURSOR LOCAL FOR SELECT emp_code FROM r5employees WHERE emp_status = 'A'
AND emp_class = 'EMP' AND emp_location IS NULL
BEGIN
OPEN C_XML2
FETCH NEXT FROM C_XML2 into @EmpID
WHILE @@FETCH_STATUS =0
BEGIN
UPDATE r5employees SET emp_status = 'NA' WHERE emp_status = 'A'
AND emp_class = 'EMP' AND emp_location IS NULL WHERE UPDATE OF C_XML2
FETCH NEXT FROM C_XML2 into @EmpID
END
CLOSE C_XML2
DEALLOCATE C_XML2
END
Snippet 3
DECLARE @EmpID
DECLARE C_XML2 CURSOR LOCAL FOR SELECT emp_code FROM r5employees WHERE emp_status = 'A'
AND emp_class = 'EMP' AND emp_location IS NULL
BEGIN
OPEN C_XML2
FETCH NEXT FROM C_XML2 into @EmpID
WHILE @@FETCH_STATUS =0
BEGIN
UPDATE r5employees SET emp_status = 'NA' WHERE emp_status = 'A'
AND emp_class = 'EMP' AND emp_location IS NULL
FETCH NEXT FROM C_XML2 into @EmpID
END
CLOSE C_XML2
DEALLOCATE C_XML2
END