Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用限制和偏移量的DB2_Sql_Db2_Ibm Midrange_Sql Limit - Fatal编程技术网

Sql 使用限制和偏移量的DB2

Sql 使用限制和偏移量的DB2,sql,db2,ibm-midrange,sql-limit,Sql,Db2,Ibm Midrange,Sql Limit,我正在开发一个JavaWeb服务,它允许在IBM中端机器AS400上从DB2数据库获取大数据集时进行分页 比如,;如果一个数据集中有10000条记录,我希望一次提取1000个块中的记录 我发现这解释了我可以使用极限和偏移。但是我需要将DB2_COMPATIBILITY_VECTOR变量设置为MYS 现在我已经在谷歌上搜索了一下,发现可以使用db2set设置这个变量。但是我还没有找到在哪里输入这个命令 我在windows机器上开发,安装了iSeries,并且可以通过iSeries 5250模拟器访

我正在开发一个JavaWeb服务,它允许在IBM中端机器AS400上从DB2数据库获取大数据集时进行分页

比如,;如果一个数据集中有10000条记录,我希望一次提取1000个块中的记录

我发现这解释了我可以使用极限和偏移。但是我需要将DB2_COMPATIBILITY_VECTOR变量设置为MYS

现在我已经在谷歌上搜索了一下,发现可以使用db2set设置这个变量。但是我还没有找到在哪里输入这个命令

我在windows机器上开发,安装了iSeries,并且可以通过iSeries 5250模拟器访问IBM中端机器


我知道这一定是一个真正的noob问题,但我如何将DB2_COMPATIBILITY_VECTOR变量更改为MYS?

DB2 for Linux Unix Windows LUW和DB2 for iSeries是不同的产品。很可能,DB2foriSeries不支持DB2_兼容性_向量。我在iSeries信息中心找不到这方面的信息

您可以使用FETCH FIRST 10 ROWS ONLY子句代替LIMIT

您应该能够使用带有的子选择,而不是限制和偏移。大概是这样的:

 SELECT emp.EMPNO, emp.SALARY
 FROM (

     SELECT EMPNO, SALARY, 
            ROW_NUMBER() OVER(ORDER BY SALARY DESC) as row_number
     FROM EMPLOYEE

 ) emp
 WHERE emp.row_number > 10
 AND emp.row_number <= 20

从IBM i 7.1 TR11或IBM i 7.2 TR3开始,现在支持带限制/偏移的普通现代分页:

SELECT SalesOrderId,OrderDate,DueDate,ShipDate,
       Status,CustomerId,SubTotal,TaxAmt
  FROM SalesOrderHeader SOH
 WHERE CustomerId=@CustomerId
ORDER BY SalesOrderId DESC
 LIMIT @ROWS_PER_PAGE      -- Variable = 10
OFFSET @PAGE_START_ROW     -- Variable = 10 * Page Number

我遇到了这个解决方案,但性能非常慢,我希望找到更快的解决方案。遗憾的是,我开始相信这可能是唯一的方法:许多“ThisSQL太慢”的问题可以通过适当的索引来解决。在IBM i Navigator中运行index adviser,然后创建推荐的索引。值得注意的是,ROW_NUMBER函数有一些限制,其中之一是它不允许您使用视图。@ZioN我使用的是IBM i v6r1,我可以毫无问题地将ROW_NUMBER应用于视图。对于DB2forIv6r1。正如Leons所指出的,您需要使用ROW_NUMBER函数,您应该将JDBC驱动程序与IBM i一起使用。@JamesA,是的,我使用的是JTOpen。但是我不知道如何使用它来允许分页?好吧,实际的答案是你不知道,不是DB2fori版本6.1。但是,如果仍要输入该命令,请在输入其他db2*命令的同一命令行中执行,例如db2stop和db2start。