Oracle - 在PLSQL中编写REST服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle - 在PLSQL中编写REST服务相关的知识,希望对你有一定的参考价值。
我创建了一个REST服务(通过APEX),它利用PL / SQL构建结果集。我循环通过一个大光标并做一个sys.htp.print(my_data)
- (顺便说一句,这是sys.htp.print
最好的选择吗?)。基本上,我将数据字符串(一次一行)转储到http缓冲区...
我的客户端进程接收数据很好,只要数据集不是太大。例如,客户端进程可以接收大约35K行的数据集,但是更大的数据集会导致问题。
我没有为分页大小设置任何值。看来我必须实现某种类型的分页功能。我的困惑是如何用PL / SQL做到这一点。
在查看APEX帮助弹出窗口时,它指的是:row_offset
和:row_count
变量。当我使用基于SQL的REST服务查询(而不是PL / SQL)时,我只需设置分页,并引用我想要的页码。这对PL / SQL有何不同?我是否继续使用REST服务URL(基本上为服务URL添加'page = 1'类型的扩展名)与基于SQL的服务一样? (即Source Type = Query),还是需要调整我的代码以引用:row_offset
和:row_count
?如果是这样,因为这是基于PL / SQL的,每次调用都必须运行服务,并且只返回大于:row_offset
的数据到:row_count
?
考虑重新处理PL / SQL以将数据作为流水线表函数返回。这允许通过像这样的查询来查询它
SELECT columns FROM TABLE(pkg.func(par=> :a)) ORDER BY...
这样它就可以处理分页,就好像它是任何其他SQL查询一样。
在Oracle 12c中,我们在SQL中使用了新的Offset和Fetch子句。
SELECT(必需列)FROM(表)(连接/谓词)ORDER BY(必需列)OFFSET 100 ROWS FETCH NEXT 10行;
您可能需要查看OracleDocumentation以及一些代码示例here。
以上是关于Oracle - 在PLSQL中编写REST服务的主要内容,如果未能解决你的问题,请参考以下文章