SQL和脚本新手,做了搜索,也许使用了不正确的措辞,所以我发布了我的问题.我在MSFT Sql Server Mgmt Studio中的脚本生成以下消息结果:
(受影响的1566行)
(59行受影响)
(受影响的1566行)
(受影响的1566行)
(262行受影响)
一切正常,但我想添加一个声明,所以如果我以外的其他人运行这个脚本,他们可以告诉我们发生了什么,类似于批处理文件中的旧Dos ECHO命令.这样结果看起来像这样:
备用表:( 1566行受影响)
更新合并目标:(59行受影响)
清理旧表:(1566行受影响)
出口历史:( 1566行受影响)
删除空白记录:(262行受影响)
我不在乎他们是否坐在同一行或每个受影响的声明之上,我只需要某种标签输出.谢谢大家!
另一种方法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秒后,将显示最后一行.
| 归档时间: |
|
| 查看次数: |
3862 次 |
| 最近记录: |