There are different ways in which you can looping records of your table I just share some examples, Let you decide which fit best in you scenario.
DECLARE @Customer_id numeric
DECLARE @cur_emp as CURSOR;
SET @cur_emp = CURSOR FORWARD_ONLY FOR
Select Coin_ID From test_auto
OPEN @cur_emp;
FETCH NEXT FROM @cur_emp INTO @Customer_id;
WHILE @@FETCH_STATUS = 0
BEGIN
print @Customer_id
FETCH NEXT FROM @cur_emp INTO @Customer_id;
END
CLOSE @cur_emp;
DEALLOCATE @cur_emp;
GO
DECLARE @Customer_id numeric
DECLARE @cur_emp as CURSOR;
SET @cur_emp = CURSOR FAST_FORWARD FOR
Select Coin_ID From test_auto
OPEN @cur_emp;
FETCH NEXT FROM @cur_emp INTO @Customer_id;
WHILE @@FETCH_STATUS = 0
BEGIN
print @Customer_id
FETCH NEXT FROM @cur_emp INTO @Customer_id;
END
CLOSE @cur_emp;
DEALLOCATE @cur_emp;
GO
DECLARE @Customer_id numeric
DECLARE cur_emp CURSOR
STATIC FOR
Select Coin_ID From test_auto
OPEN cur_emp
IF @@CURSOR_ROWS > 0
BEGIN
FETCH NEXT FROM cur_emp INTO @Customer_id
WHILE @@Fetch_status = 0
BEGIN
print @Customer_id
FETCH NEXT FROM cur_emp INTO @Customer_id
END
END
CLOSE cur_emp
DEALLOCATE cur_emp
SET NOCOUNT OFF
GO
DECLARE @count INT
DECLARE @row INT
Declare @Coin_ID int
SET @row = 1
SELECT @count = COUNT(Coin_ID) FROM test_auto
WHILE (@row <= @count)
BEGIN
Select @Coin_ID = Coin_ID From test_auto
--Do some processing here
print @Coin_ID
SET @row += 1
END
Refer links:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/declare-cursor-transact-sql?view=sql-server-2017
https://sqlperformance.com/2012/09/t-sql-queries/cursor-options
https://www.techrepublic.com/blog/the-enterprise-cloud/comparing-cursor-vs-while-loop-performance-in-sql-server-2008/
http://stevestedman.com/2015/03/simple-cursor-example-forward_only-vs-fast-forward/
No comments:
Post a Comment