Wir haben eine Tabelle in Oracle 11g mit einer varchar2 Spalte. Wir verwenden eine proprietäre Programmiersprache, in der diese Spalte als String definiert ist. Maximal können wir 2000 Zeichen (4000 Bytes) in dieser Spalte speichern. Jetzt ist die Anforderung, dass die Spalte mehr als 2000 Zeichen (tatsächlich unbegrenzte Zeichen) speichern muss. DBAs mögen BLOB- oder LONG-Datentypen aus Wartungsgründen nicht.Wie speichern Sie unbegrenzte Zeichen in Oracle 11g?
Die Lösung, die ich mir vorstellen kann, ist diese Spalte aus der ursprünglichen Tabelle zu entfernen und eine separate Tabelle für diese Spalte haben und dann jedes Zeichen in einer Zeile speichern, um unbegrenzte Zeichen zu erhalten. Diese Tabelle wird mit der ursprünglichen Tabelle für Abfragen verknüpft.
Gibt es eine bessere Lösung für dieses Problem?
UPDATE: Die proprietäre Programmiersprache erlaubt Variablen vom Typ String und Blob zu definieren, gibt es keine Option von CLOB. Ich verstehe die Antworten, aber ich kann die DBAs nicht übernehmen. Ich verstehe, dass das Abweichen von BLOB oder LONG der Alptraum der Entwickler sein wird, aber immer noch nicht helfen kann.
UPDATE 2: Wenn maximal 8000 Zeichen benötigt werden, kann ich einfach 3 weitere Spalten hinzufügen, so dass ich 4 Spalten mit je 2000 Zeichen habe, um 8000 Zeichen zu erhalten. Wenn also die erste Spalte voll ist, werden die Werte in die nächste Spalte und so weiter übertragen. Wird dieses Design irgendwelche schlechten Nebenwirkungen haben? Bitte vorschlagen.
Das klingt sicher wie eine DailyWTF-Geschichte vor unseren Augen ... –
Nun, wenn Sie Ihren DBAs sagen, dass Sie das tun werden, dann bin ich sicher, dass sie bereit wären, BLOB zu überdenken oder LANGE. Alles, um das zu vermeiden :) –
Als Junior-Entwickler hatte ich diese Situation und wurde gezwungen, eine Reihe von Nvarchar-Reihen nacheinander abzubilden. Die Einfüge- und Aktualisierungslogik war so komplex, dass die Anwendungsschicht einen Pflegekopfschmerz hatte, der viel schlimmer war als der dba-Kopfschmerz. – dkackman