I\'m trying to put the results of a stored procedure into a cursor to use within the current procedure. I\'ve added my code below but I\'m not sure if this is possible or if
in my opinion very interesting approach would be to use cursor as parameter (although if you not going to update table i don't think its better choice):
create Table dbo.MyTable
(
i int
);
Insert Into dbo.MyTable (i) values (1)
Insert Into dbo.MyTable (i) values (2)
Insert Into dbo.MyTable (i) values (3)
Insert Into dbo.MyTable (i) values (4)
Go
Set NoCount ON;
Go
Create Proc dbo.myProc
(
@someValue int,
@cur Cursor Varying Output
)
As
Begin
declare @x int;
Set @cur = Cursor for
Select i From dbo.MyTable
Where i < @someValue;
open @cur
End
Go
-- Use of proc
declare @cur cursor;
declare @x int;
Exec dbo.myProc 3, @cur output
fetch next from @cur into @x
while @@fetch_status = 0
begin
print 'value: ' + cast(@x as varchar)
fetch next from @cur into @x
end
close @cur;
Deallocate @cur;
Go
--Cleanup
Drop Proc dbo.myProc
Drop Table dbo.MyTable
The syntax of cursor in SQL-Server is:
DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement
After FOR
you must write a SELECT
.
For more info see: https://msdn.microsoft.com/it-it/library/ms180169.aspx
You can do it like this:
DECLARE @t TABLE (ID INT)
INSERT INTO @t
EXEC spGetUserIDs
DECLARE cursorIDList CURSOR FOR
SELECT * FROM @t
OPEN cursorIDList
FETCH NEXT FROM cursorIDList INTO @ID