交互式报表 (IR) 最糟糕的方面是您无法使用 PL/SQL 返回 SQL 语句来创建它。我已经使用两种方法解决了这个问题:
1)APEX_COLLECTION.CREATE_COLLECTION
在 中Before Header Process
,它接受一条 SQL 语句(在过程中用 PL/SQL 构造),并让 IR 的来源为select c001 alias1, c002 alias2 ... from apex_collections a where collection_name = '...'
2)只要你需要,就可以用参数列表制作一个badass管道函数,然后让IR的源成为select * from table(package_name.pipelined_function_name(:P1_parameter1, :P1_Parameter2))
有性能差异吗?我最初使用第一种方法,但后来遇到了一个问题,它给了我一个错误,所以我尝试了流水线函数,发现我只是更喜欢它,并且从那时起就倾向于使用它们,除非这样做不合适(即当有大量的项目要传递给参数)。