Not using cursors is a whole lot easier here. Use a table of integers:INSERT INTO tblBillingSELECT invoice_no, price, qtyFROM tblInvoiceINNER JOIN Numbers ON n BETWEEN 1 AND qty
This will create 0-999 (although a 1-based table would be more suitable in this case):CREATE TABLE Numbers (n int PRIMARY KEY)INSERT INTO Numbers SELECT T1.n + T2.n*10 + T3.n*100 FROM (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) T1, (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) T2, (SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) T3