我們在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