DOS Echo命令的SQL版本?

0 sql sql-server echo

SQL和脚本新手,做了搜索,也许使用了不正确的措辞,所以我发布了我的问题.我在MSFT Sql Server Mgmt Studio中的脚本生成以下消息结果:

(受影响的1566行)

(59行受影响)

(受影响的1566行)

(受影响的1566行)

(262行受影响)

一切正常,但我想添加一个声明,所以如果我以外的其他人运行这个脚本,他们可以告诉我们发生了什么,类似于批处理文件中的旧Dos ECHO命令.这样结果看起来像这样:

备用表:( 1566行受影响)

更新合并目标:(59行受影响)

清理旧表:(1566行受影响)

出口历史:( 1566行受影响)

删除空白记录:(262行受影响)

我不在乎他们是否坐在同一行或每个受影响的声明之上,我只需要某种标签输出.谢谢大家!

Dam*_*ver 6

另一种方法PRINT是使用RAISERROR().奇怪的是,鉴于它的名称,它不仅仅是错误报告.

RAISERROR('message',10,1) 只是报告信息.

你也可以WITH NOWAIT在最后添加; 这有利于消息立即出现.PRINT语句与其他消息和结果集一起缓冲,因此如果在特定事件之后发生长时间运行的任务,则在长时间运行的任务也已完成1之前PRINT,您可能实际上看不到PRINTed消息.

另外值得注意的是,它RAISERROR()包含一些原始printf样式格式化功能,而PRINT您自己组装字符串并执行CONVERT调用以将非字符串值转换为字符串.例如:

RAISERROR (N'This is message %s %d.',10,1,N'number',5) WITH NOWAIT;
Run Code Online (Sandbox Code Playgroud)

将打印:

This is message number 5
Run Code Online (Sandbox Code Playgroud)

立即到消息窗口.


1例如,尝试运行以下两个脚本.1:

print 'abc'
print 'def'
waitfor delay '00:00:30'
print 'ghi'
Run Code Online (Sandbox Code Playgroud)

和2:

RAISERROR('abc',10,1) WITH NOWAIT
RAISERROR('def',10,1) WITH NOWAIT
waitfor delay '00:00:30'
RAISERROR('ghi',10,1) WITH NOWAIT
Run Code Online (Sandbox Code Playgroud)

两者产生相同的输出:

abc
def
ghi
Run Code Online (Sandbox Code Playgroud)

两者之间的区别在于,对于脚本1,您将看到30秒没有输出,然后看到所有3行,而对于脚本2,您将看到:

abc
def
Run Code Online (Sandbox Code Playgroud)

立即然后,30秒后,将显示最后一行.