是否可以在不显示结果的情况下执行SQL查询?
喜欢
Select * from Table_Name
Run Code Online (Sandbox Code Playgroud)
运行此查询后,结果不应该显示在sql server中.
der*_*oby 63
我很惊讶没有人想出答案:打开"执行后丢弃查询结果"选项 ; 我很确定那是面试官所追求的.SET FMT ONLY恕我直言,完全不同.
在SSMS中
您可能希望这样做的原因是为了避免必须等待并浪费资源以将结果加载到网格中,但仍然能够具有例如实际执行计划.
gbn*_*gbn 33
执行将返回记录集.当然它可能没有行但得到结果
您可以使用SET FMTONLY抑制行但不抑制结果集
SET FMTONLY ON
SELECT * FROM sys.tables
SET FMTONLY OFF
SELECT * FROM sys.tables
Run Code Online (Sandbox Code Playgroud)
从来没有亲自使用它...
编辑2018.如上所述,请参阅@ deroby的答案,以寻求更好的解决方案
Phi*_*ley 14
对我来说听起来像是一个可疑的面试问题.我已经完成了,我需要这样做,但你只需要在相当模糊的情况下这样做.模糊不清,但有时非常重要.
正如@gbn所说,有一种编程方式SET FMTONLY(谢谢,现在我不必从我的旧脚本文件中挖掘它).一些程序和实用程序在查询SQL时执行此操作; 首先他们提交一个带有FMTONLY ON的查询,以确定生成的表结构的布局,然后当他们准备好运行它以FMTONLY OFF获取时,获取实际数据.(当程序调用第二个程序时,我发现了这一点,第二个程序返回了数据集,并且由于晦涩的原因,整个纸牌屋都掉了下来.)
这也可以在SSMS中完成.对于所有查询窗口,在"工具/选项"下,"查询结果/ SQL Server /结果到XX",选中"查询执行后丢弃结果"; 仅对于当前窗口,在"查询/查询选项"下,"结果/ XX",相同的复选框.这里的优点是查询将在数据库服务器上运行,但不会返回数据结果.如果您正在检查查询计划但不希望收到10GB的数据(通过网络连接到您的笔记本电脑上),或者您正在进行一些严重的循环测试,这可能是非常宝贵的,因为SSMS只能接受在使用"太多结果集"消息停止查询之前,来自给定"运行"的结果集如此之多.[嗯,请仔细检查我的"仅查询计划"位 - 我认为这样做,但已经很长时间了.
insert anothertable
Select * from Table_Name
Run Code Online (Sandbox Code Playgroud)
执行select但不返回任何内容
set noexec on
Select * from Table_Name
Run Code Online (Sandbox Code Playgroud)
解析但不执行,因此不返回任何内容.
小智 5
如果您需要执行查询但不需要实际结果集,您可以将查询包装在 EXISTS(或 NOT EXISTS)语句中:IF EXISTS(SELECT * FROM TABLE_NAME...)。或者,您可以选择 INTO #temp,然后删除临时表。
| 归档时间: |
|
| 查看次数: |
82075 次 |
| 最近记录: |