html页面utl传值,如何通过PL / SQL utl_http.html_pieces确定一个部分(示例代码)

我正在寻找一些帮助,了解request_pieces函数的工作原理。什么定义一件作品是什么或者是否需要选择数量的字符来构建作品例如前2000个字符将是一个peice。

我还有来自以下PL / SQL块的错误 - PL / SQL:数字或值错误:字符串缓冲区太小

DECLARE

x utl_http.html_pieces;

BEGIN

x := utl_http.request_pieces('www.testwebsite.co.uk', 100);

dbms_output.put_line(x.count || ' pieces were retrieved.');

dbms_output.put_line('with total length ');

IF x.count < 1

THEN dbms_output.put_line('0');

ELSE dbms_output.put_line

((2000 * (x.count - 1)) + length(x(x.count)));

END IF;

END;

谢谢你的帮助。

答案

REQUEST_PIECES迭代READ_TEXT或READ_RAW,直到它获得END_OF_BODY。如果READ_TEXT返回的内容超过2000(字节?),那么它将在UTL_HTTP内失败。如果这就是问题,我将使用VARCHAR2(32000)变量专门在您自己的循环中调用READ_TEXT,看看是否有效。

如果底层Oracle逻辑试图以2000个大小的块来获取它,那么字符集转换/多字节字符可能会有些奇怪,这可能偶尔会出现错误计数(尽管它应该给出partial_multibyte_char异常)。可能设置内容类型的HTTP标头会有所帮助。

另一答案

我假设你在谈论UTL_HTTP.REQUEST_PIECES。请阅读文档以获取更多详细信息。

是的,每件都是2000个字符。例如,如果请求的数据长度为5000个字符,则前两个将为2000个字符,第三个将为1000个字符。

我收回之前说过的话。文件说:

此函数返回的PL / SQL表(“部分”)的每个条目可能无法填充到最大容量。在前一个“片段”完全填满之前,该功能可以开始填充下一个片段中的数据。

他们并不清楚这是如何发生的。那么每件都在1-2000个字符之间?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值