我们RowCount
设置要返回或影响的记录数。但是我们需要在执行sql语句之前每次都设置它。我正在寻找一种方法来设置我的应用程序启动后,所以它会影响通过我的应用程序执行的所有查询。
更新
我希望实现有限记录的试用版策略!我不想弄乱我的实际代码,并希望以某种方式数据库限制记录的数量返回任何查询的结果!另一种方法是将参数传递给每个商店 - 程序,但我真的不喜欢这个并寻找其他策略!
答案 0 :(得分:6)
您可以在代码中为所有命令
设置TOP参数DECLARE @rows int
SET @row = ISNULL(@row, 2000000000)
SELECT TOP (@rows) ... FROM ..
您可以通过这种方式为所有查询全局定义TOP,例如通过包装或扩展SQLCommand
SET ROWCOUNT不是一个安全的选项:它会影响中间结果集并具有其他不可预测的行为。在I / U / D DML中忽略它被忽略:see MSDN
使用SET ROWCOUNT不会影响SQL Server下一版本中的DELETE,INSERT和UPDATE语句
答案 1 :(得分:2)
您没有提到您正在使用的应用程序语言,因此我无法为您提供代码,但为数据库连接创建包装函数。在此函数中,在连接到数据库之后,发出SET ROWCOUNT n
,使n
成为参数并添加使其变量所需的任何逻辑。我用CONTEXT_INFO做了类似的事情,我在连接函数中设置它。
请记住,您需要使用此包装函数连接到应用程序中的任何位置的数据库(使用搜索和替换),因此,您将始终设置rowcount。
答案 2 :(得分:0)
在应用程序启动时,通过执行以下命令重置RowCount
:
command.CommandText = "SET ROWCOUNT 0;";
激活特定模式后,执行以下命令将RowCount
设置为所需的值:
command.CommandText = "SET ROWCOUNT " + rowCount + ";";
停用特定模式后,请再次重置RowCount
。