使用sqlcmd时仅返回受影响的N行

时间:2018-05-29 09:59:08

标签: sql-server sqlcmd

当我使用sqlcmd时,它撤消了N行受影响的消息+结果。我只想返回N行受影响的消息。你知道我们是否为sqlcmd做了一些配置吗?

1 个答案:

答案 0 :(得分:0)

我猜这是一个xy问题,我的答案基于我猜测的真正OP的需求;他们正在检查表/语句中的行数,然后检查返回消息语句的输出以确保它满足期望。

我认为,相反,OP的奇怪设置的正确方法是使用SET NOCOUNT ON,然后创建自己的PRINT语句。这是过度简化的SQL,但是,因为我没有查询可以使用。首先,样本表:

USE Sandbox;
Go
--Create sample table
CREATE TABLE #test (i int);
INSERT INTO #test
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9);
GO

然后是解决方案:

--The solution
SET NOCOUNT ON; --This turns the normal message off

DECLARE @Count int;

SELECT @Count = COUNT(*)
FROM #test
WHERE i > 5;

IF @Count = 1 BEGIN
    PRINT '(' + CONVERT(varchar(5),@Count) + ' row affected)';
END ELSE BEGIN
    PRINT '(' + CONVERT(varchar(5),@Count) + ' rows affected)';
END

清理

--Clean up
GO
DROP TABLE #test;