Parameters 参数化仅在DB2中获取前n行

Parameters 参数化仅在DB2中获取前n行,parameters,db2,ibm-midrange,Parameters,Db2,Ibm Midrange,我正在努力做到以下几点: select * from table fetch first @param rows only select t.* from (select r.*, row_number() over() as row_num from table r) as t where row_num <= @param @param是一个int DB2不会拥有它。我听说过将它与| |连接在一起,但我似乎无法实现这一点 有人有这方面的经验

我正在努力做到以下几点:

  select * 
  from table      
  fetch first @param rows only
select t.*
from (select r.*, row_number() over() as row_num  
      from table r) as t
where row_num <= @param
@param是一个int

DB2不会拥有它。我听说过将它与| |连接在一起,但我似乎无法实现这一点

有人有这方面的经验吗


PS我看到了a,但不理解他的方法,使用“:1”。

您可以尝试以下方法:

  select * 
  from table      
  fetch first @param rows only
select t.*
from (select r.*, row_number() over() as row_num  
      from table r) as t
where row_num <= @param
尝试此操作,其中V_NBR是所需行数的传入参数:

FETCH FIRST ' || DIGITS ( V_NBR ) || '  ROWS ONLY '  

这是一个存储过程吗?您是从客户机执行此操作的吗?如果是,客户端代码是用什么编写的,您有权访问它吗?@AJ这是一个存储过程,我有权访问它。可以调用sp fine,只是在传入参数时无法编译,只能获取前n行。我可以试试。。。我只是认为应该有一种方法将参数传递给上面的查询!我认为这不是100%的原因,您不能使用上面的原因是fetch first x rows only语法更像是一个优化指令,而不是一个分页语法功能。它指示DB2不要执行通常的主动预取读取,从而节省一些磁盘访问。对于大型表来说,这可能非常低效,因为您要为每一行分配一个行号,然后选择数字较低的行。Hi@rocket。我试图在DB2I系列机器程序上实现您的解决方案。但它不起作用。你能帮我吗?