我们在Oracle 11g中有一个带有varchar2列的表。我们使用专有编程语言,其中此列被定义为字符串。我们最多可以在此列中存储2000个字符(4000字节)。现在需求是这样的,列需要存储超过2000个字符(实际上是无限制的字符)。由于维护原因,DBA不喜欢BLOB或LONG数据类型。如何在Oracle 11g中存储无限制字符?
我能想到的解决方案是从原始表中删除此列,并为此列创建一个单独的表,然后将每个字符存储在一行中以获取无限制字符。这个tble将与原始表连接以进行查询。
有没有更好的解决方案来解决这个问题?
更新:专有的编程语言允许定义类型为字符串和blob的变量,没有CLOB的选项。我了解给出的答案,但我不能接受DBA。我明白,偏离BLOB或LONG将成为开发者的噩梦,但仍然无法提供帮助。
更新2:如果我需要的最大数量是8000个字符,我可以只添加3个列,这样我将有4列2000字符每个获得8000个字符。所以当第一列填满时,数值会溢出到下一列等等。这个设计会有什么不好的副作用吗?请建议。
这听起来像是DailyWTF的故事正在我们眼前展开... – 2010-06-04 16:55:33
好吧,如果你告诉你的DBA这就是你要做的事情,那么我相信他们会愿意重新考虑BLOB或长。任何事情要避免:) – 2010-06-04 16:57:19
作为初级开发人员,我有这种情况,并被迫使用一系列nvarchar行映射一个接一个。插入和更新逻辑非常复杂,以至于应用程序层出现比dba头疼更糟糕的维护性头痛。 – dkackman 2010-06-04 17:01:01