Can I get the results of a stored procedure into a cursor within another stored procedure in SQL

前端 未结 3 1530
慢半拍i
慢半拍i 2021-01-11 15:36

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

相关标签:
3条回答
  • 2021-01-11 15:51

    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
    
    0 讨论(0)
  • 2021-01-11 15:51

    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

    0 讨论(0)
  • 2021-01-11 16:03

    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
    
    0 讨论(0)
提交回复
热议问题