如何在Oracle 11g中插入大于特定列最大容量的数据而不改变其数据类型

Posted

技术标签:

【中文标题】如何在Oracle 11g中插入大于特定列最大容量的数据而不改变其数据类型【英文标题】:How to insert data larger than maximum capacity of specific column without changing its datatype in Oracle 11g 【发布时间】:2017-07-11 04:50:05 【问题描述】:

我有大量数据(超过 4000 个字符),并且在 Oracle 11g 中有一个 VARCHAR2(4000) 类型的列。

有没有什么方法可以在不改变其数据类型的情况下将该数据插入该列?

【问题讨论】:

不,这是不可能的。你有什么选择?添加一列? 您的问题可能与this重复。 更改问题的标题。考虑到您将“plsql”标签放在您的问题上,“字段”这个词是模棱两可的。如果您指的是 PL/SQL 块中的变量,请更改标题以使用“变量”一词;否则使用“列”一词。 您已经回答了您的问题。再次阅读您的问题。你写了I have large data (more than 4000 character) and i have field with varchar2(4000) datatype.I am just trying to insert that data in field without changing datatype。就外行而言,您试图将JAR of water 放入CUP 而不改变cup 的大小。而且你知道你的活动的后果。 【参考方案1】:

如果您指的是在 PL/SQL 包、函数或过程中定义的变量,则 VARCHAR2 变量的最大长度为 32k。如果必须保留该值,那么您必须决定是否要保持数据连续。如果这样做,则必须将列的数据类型更改为 CLOB。如果它不需要是连续的,那么只需创建一个子关系来存储这些片段。

【讨论】:

【参考方案2】:

不,如果数据大于您在数据类型中指定的值,您的数据将被截断。解决此问题的最佳方法是将 varchar2(4000) 更改为 varchar2(max) 。 MAX 将允许您插入最多 32000 个字符的数据。

【讨论】:

以上是关于如何在Oracle 11g中插入大于特定列最大容量的数据而不改变其数据类型的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g - 在oracle 11g数据库中获取标识列的最后一个插入ID的方法是什么?

Oracle11G的表空间数据文件大小限制问题处理

如何在 Oracle 11g 中使用列名查找存储过程的名称

如何在 Oracle 11g 中使用游标在表中插入数据?

oracle 11g 中有没有办法在表中存储临时值?

『ORACLE』 创建表(11g)