Im Rahmen der Migration von Forms 11g nach 12c sind wir hier auf ein interessantes Problem gestoßen: und zwar tritt unter bestimmten Bedingungen ein ORA-01406 (Spaltenwert abgeschnitten) auf.
Die zugrundeliegende Tabelle hat ein Textfeld das beispielsweise so definiert ist:
BEZEICHNUNG VARCHAR2(10 BYTE)
Darin ist zB folgender Wert gespeichert: "Hütte12345" - d.h. der String enthält einen Umlaut und ist voll aufgefüllt.
Gleich vorweg - der Fehler tritt mit folgenden Werten nicht auf:
"Hutte12345"
"Hütte1234"
Der Fehler trat in tabellenbasierten Blockattributen auf und konnte dort durch das explizite Setzen der Längensemantik behoben werden.
Allerdings gibt es da noch eine PLL-Funktion, wo der Fehler im Code auftritt - und hier ist die Sache nicht so einfach zu beheben:
FUNCTION get_fabr_row(iFabrNr varchar2)
RETURN is_fabrikate%rowtype
IS
db_row is_fab%rowtype;
BEGIN
select * into db_row
from is_fab
where nr = iFabrNr;
RETURN db_row;
END;
Hier tritt der Fehler unmittelbar beim Selektieren in die Recordvariable db_row auf!
Der Verdacht liegt natürlich nahe, dass es sich um ein NLS-Problem handelt.
Die Sache wird noch kompliziert dadurch, dass der Fehler am Entwicklungssystem nicht auftritt - allerdings am Testsystem schon. Und bei diesem habe ich leider keinen direkten Zugriff auf die Konfiguration - und habe auch keine Möglichkeit diese selbst zu kontrollieren. Bin da von einem Kollegen abhängig, der leider immer seltener verfügbar ist (ist schon in einem anderen Projekt und kann sich um das eigentlich gar nicht mehr kümmern etc. etc.)
Jetzt wäre es sehr hilfreich, hier von der Community Hinweise zu bekommen, in welche Richtung ich da schauen sollte. Wodurch kann dieses Verhalten ausgelöst werden?
Danke,
Stephan