Область действия «Установить количество строк» ​​в SQL - PullRequest
5 голосов
/ 22 марта 2011

Я использую «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

Теперь в приведенных выше SP вы должны видеть, что я не соответствует инструкциям SetRowcount.Итак, мой вопрос, что если я забыл добавить «Set RowCount 0» в мой вводный оператор «Set RowCount N».Это необходимо?Повлияет ли это на выполнение остальных SP в моем приложении?

1 Ответ

5 голосов
/ 22 марта 2011

Вопреки принятому ответу на вопрос, связанный с комментариями в , насколько я вижу, правила области для этого точно такие же, как и для #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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...