Sql server 选择不带顶部,然后假设顶部为N

Sql server 选择不带顶部,然后假设顶部为N,sql-server,Sql Server,我的程序连接到SQL Server。这个程序有很多Select语句。如果程序执行 Select * from MyTable 我希望SQL server只返回前200行,而不是返回所有行 仅当程序显式执行时 Select top all * from MyTable 然后,SQL引擎返回所有行 SQL Server中是否有执行此操作的选项?如果没有,如何实现它?您可以使用以下内容: DECLARE @topCount INT = 5; SELECT TOP(@topCount) * FRO

我的程序连接到SQL Server。这个程序有很多Select语句。如果程序执行

Select * from MyTable
我希望SQL server只返回前200行,而不是返回所有行

仅当程序显式执行时

Select top all * from MyTable
然后,SQL引擎返回所有行


SQL Server中是否有执行此操作的选项?如果没有,如何实现它?

您可以使用以下内容:

DECLARE @topCount INT = 5;

SELECT TOP(@topCount) * FROM sys.objects;
现在用一个“为所有人而做”的逻辑

SET@topCount=0--或空,或-1。。。

选择TOP(如果为空(@topCount,0),则为大小写)为什么不将TOP添加到selects中,并在需要所有数据时删除TOP?您不能只告诉sql server在每个select语句中获取200行。此外,当您开始提到前200行时,您引入了顺序的概念。sql server如何知道您需要哪200行?因此,如果使用TOP,您确实需要添加顺序by或您的结果不一致,但它也会覆盖显式的
top all
。他有点可以,但有一些复杂。
设置行数
设置默认值,但在所有方面,包括触发器等。@SeanLange感谢您提供的信息。我认为这是可以接受的。嗯,除非他想涉入设置行数
。他可能在考虑一些SQL客户机,比如SquirreSQL,默认情况下限制为100行。
SET @topCount=0; --or NULL, or -1 ...

SELECT TOP(CASE WHEN ISNULL(@topCount,0)<=0 THEN 999999999 ELSE @topCount END) * FROM sys.objects;