我有一个 PL/SQL 过程。它执行一条 SQL 语句并返回一个 json 响应。
我想限制使用 offset 子句返回的行。例如:
select *
from wherever
where something = parameter
offset 0 rows
fetch next 25 rows only;
但是,我似乎无法使用变量来替换上面示例中的 0 和 25。
当然,有一些方法可以解决这个问题。我可以像在 11g 中出现偏移子句之前那样编写代码。但它看起来很难看,可能表现不佳....我错过了什么吗?proc或游标中SQL的offset子句中可以使用参数吗?
例如,以下过程确实编译但返回的光标始终为空(当我在值中硬编码时不是):
procedure test (pPageSize in pls_integer:=25, pPageno in pls_integer:=1, RecipeList out sys_refcursor) is
vNextRows pls_integer;
vOffset pls_integer;
begin
vOffset:= pPageSize*(pPageno-1);
vNextRows:= pPageSize;
open RecipeList
for
select *
from recipes
order by recipeno
offset vOffset rows
fetch next vNextRows rows only;
end test;