任何人都可以在有关T-SQL的以下情况下提供帮助:
如果您有一个名为SP_A的存储过程,该存储过程在内部调用了SP_B的存储过程,那么您将以下指令作为SP_A的第一行:SET NOCOUNT ON
。我知道NOCOUNT变量具有批处理作用域,因此值得一提的是,在任一存储过程的主体中任何地方都没有GO
命令。
子存储过程(SP_B)中的NOCOUNT会生效吗?
SP_A代码示例:
CREATE PROCEDURE dbo.SP_A
AS
BEGIN
SET NOCOUNT ON
EXEC dbo.SP_B
END
示例SP_B代码:
CREATE PROCEDURE dbo.SP_B
AS
BEGIN
SELECT * FROM dbo.SOME_TABLE
END
从SP_B过程中进行选择会打印受影响的行数吗?
答案 0 :(得分:3)
SET NOCOUNT ON将防止存储过程或任何嵌套的存储过程(或动态批处理)发送行计数消息。如果嵌套过程或批处理将NOCOUNT OFF设置为行,则将为该批处理中的语句发送行计数消息,但是当控制权返回到外部proc / batch时,将恢复NOCOUNT OFF行为。