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服务的主要内容,如果未能解决你的问题,请参考以下文章

编写 PLSQL Oracle 函数来查询表

如何用plsql连接oracle数据库

Oracle数据库的PLSQL

plsql连接服务器oracle

如何使用PLSQL连接远程服务器oracle数据库

plsql配置新的oracle如何连接?