当我使用sqlcmd时,它撤消了N行受影响的消息+结果。我只想返回N行受影响的消息。你知道我们是否为sqlcmd做了一些配置吗?
答案 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;