SQL中"设置行数"的范围

Roc*_*ngh 5 sql sql-server-2008

我在我的存储过程中使用"Set RowCount".我有一个问题,Set RowCount的范围是什么?考虑以下SP

 CREATE PROC Test
    AS 
        BEGIN

            SET ROWCOUNT 10
            ...........

            SET ROWCOUNT 0

        END


CREATE PROC Test2
AS 
    BEGIN


        ...........

        SET ROWCOUNT 0

    END


CREATE PROC Test3
AS 
    BEGIN

        SET ROWCOUNT 10
        ...........


    END


CREATE PROC Test4
AS 
    BEGIN

        SET ROWCOUNT 10
        SET ROWCOUNT 5
        ...........
        SET ROWCOUNT 0      

    END
Run Code Online (Sandbox Code Playgroud)

现在在上面的SP中,你必须看到我有不匹配的SetRowcount语句.所以我的问题是,如果我忘记将"Set RowCount 0"添加到我的开头"Set RowCount N"语句中.有必要吗?它会影响我的应用程序中其他SP的执行吗?

Mar*_*ith 5

评论中链接的问题中接受答案相反,据我所知,范围规则与#temp表可见性的范围规则完全相同.它传播到子批次,但是当批次退出时,它将重置为先前的值.

CREATE PROC #bar
AS
SELECT * FROM sys.objects
EXEC ('SELECT * FROM sys.objects')
GO

CREATE PROC #foo
AS
SET ROWCOUNT 1

EXEC #bar
GO

SET ROWCOUNT 4
EXEC #foo /*Returns 2 resultsets with 1 row*/
EXEC #bar /*Returns 2 resultsets with 4 rows*/

DROP PROC #foo
DROP PROC #bar
Run Code Online (Sandbox Code Playgroud)