Buat apa fungsi "cursor" di SQL Server atau di system database pada umumnya?

Cursor digunakan agar kita meng-access setiap row dari satu tabel atau dari result (kumpulan data).
Kalo gw ingin migrasikan data dari tabel
tblA (property1_A, property2_A) ke tabel
tblB (property1_B, propery2_B), ini cukup bisa direalisasikan dengan perintah begini:
INSERT INTO tblB (property1_B, propery2_B)
SELECT property1_A, property2_A FROM tblA
Tapi bila di tabel B masi punya kolom lain (misalnya
property3_B), yang mana datanya gak bole kosong (NOT NULL), instruksi diatas bakal gagal. Seandainya nilai dari kolom itu "numeric" dan "increment", tapi di database sendiri gak disetting otomatis "increment" kita bisa memakai fungsi CURSOR untuk migrasi.
DECLARE @prop1 varchar(64), @prop2 varchar(64), @prop3 int
SET @prop3 = 1
DECLARE BubbaCursor CURSOR FOR
SELECT property1_A, property2_A FROM tblA
OPEN BubbaCursor
FETCH BubbaCursor INTO @prop1, @prop2
WHILE @@Fetch_Status = 0
BEGIN
INSERT INTO tblB (property1_B, property2_B, property3_B)
VALUES (@prop1, @prop2, @prop3)
FETCH BubbaCursor INTO @prop1, @prop2
SET @prop3 = @prop3 + 1
END
CLOSE BubbaCursor
DEALLOCATE BubbaCursor
RETURN