我正在使用一个应用程序,其中我使用jdbc
。到目前为止,我们在UI中为用户输入的长度为320000
(320k)。因此,我们将此字段分为10个部分,并将其发送到Pl/SQL
db过程以插入到表中。我们在过程参数中的10个varchar2变量中接收消息。
但是现在客户端改变了要求,他想让用户的大小加倍。因此,如果我们除以640000/10
,将得到64000
,这超出了varchar2
的限制,即32767。这意味着我们不能在过程中使用varchar2类型变量来存储这些值。
许多其他应用程序都会呼叫这个程序。
我的问题是,我应该为过程中的pl/sql
变量而不是varchar2
更改哪种数据类型,这样代码就不会因其他应用程序而中断?
现有的是
create procedure(field 1 varchar2, field2 varchar2...........field10 varchar2)
begin
end
我们应该使用什么数据类型来代替这里的varchar2。
在过程中,我们将这些输入聚合起来,并存储到一个CLOB类型的列中。
我阅读了文档,但仍然没有得到解决方案
1条答案
按热度按时间3ks5zfa01#
如果可以将数据拆分为2组VarChar 2字段,每组10个字段(32000)值-在这种情况下,您可以(具有较小干预),我想说的是,你可以像以前一样将第一组320 K数据分成10个字段--将它们放入一个数组中,然后使用相同的逻辑获取第二组320 K数据。在这种情况下,您应该在原始程序中再添加一个参数,说明它是设置为1还是2。
你应该用一个小 Package 和一个阵列来处理这个过程。
不确定你的手术是什么样子,只是提供一些思考的东西。
下面是一个选项-首先创建一个适当大小的数组:
接下来是处理数据并获取要写入数据库的CLOB的包:
...和程序包主体...
现在,您从10(32000)个字段收集数据的过程应更改为如下所示的内容,其中您将以两个集合(最后一个参数)传递FIELD 1、FIELD 2、...、FIELD 10数据。数据将存储在数组中,然后收集到xCLOB变量中,您可以将该变量存储在表中。
此致