was beeinflusst Oracles Bestimmung des String-Ausdrucks-Datentyps?

8

Ich beobachte einen Unterschied darin, wie Oracle einen Datentyp von String-Ausdrücken auf einer bestimmten Oracle-Instanz bestimmt. Das auffälligste Beispiel ist der Datentyp einer leeren Zeichenfolge: In allen Instanzen außer dem Datentyp ist der Datentyp char (0); auf diesem außergewöhnlichen ist es char (32).

Das folgende Skript veranschaulicht dies: Es analysiert eine einfache Anweisung SELECT '' FROM dual und beschreibt die Spalte.

%Vor%

Es gibt 32 für diese spezifische Instanz und 0 für alle anderen Instanzen zurück. Folgendes ist das Ergebnis der Abfrage von nls_database_parameters für diese bestimmte Instanz:

%Vor%

Es unterscheidet sich nicht von allen anderen Instanzen. Das einzige, was anders ist, ist die installierte TDE-Option. Leider habe ich keine Instanz mit dieser Option installiert und kann sie dort nicht testen ...

Meine Frage ist, ob jemand die Faktoren kennt, die die Art beeinflussen können, wie Oracle den Datentyp von String-Ausdrücken bestimmt. Der Fall mit leeren Strings ist nicht der einzige, aber es ist der kritischste, da wir eine Legacy-Anwendung haben, die viele SELECTs mit leeren Strings ausgibt, ohne sie auf einen bestimmten Datentyp zu übertragen, und dieser Unterschied im Verhalten von Oracle verhindert, dass die Anwendung funktioniert. Irgendwelche Eingaben würden geschätzt!

Konstantin

    
k-g 26.01.2012, 11:33
quelle

1 Antwort

1

Sehr neugierig, ich kann das nicht auf 9.2.0.1.0, 10.2.0.1.0, 11.1.0.6.0 oder 11.2.0.1.0 replizieren und sie haben alle nahezu identische Parameter (UK nicht US).

Die einzige Möglichkeit, die mir einfällt, ist, dass sich jemand irgendwann bei sys angemeldet hat und mit (alteriertem) dual gespielt hat. Offensichtlich habe ich den Servernamen und pw verdeckt ...

%Vor%

Ihre Ausgabe sollte wie oben aussehen. Wenn es etwas anderes ist, würde das die Fremdartigkeit erklären.

    
Ben 26.01.2012 12:12
quelle

Tags und Links