So erhalten Sie die Länge von VARCHAR2-Attributs in Oracle-Objekttyp, mit OracleTypeCHAR Metadaten, unabhängig von der Datenbank-Zeichensatz
Meine Java-Anwendung hängt von Oracle Objekttypen von Metadaten. Ich benutze oracle.jdbc.oracore.OracleTypeCHAR
Klasse wird der Zugriff auf diese Metadaten mit JDBC. Nach der Konvertierung der Datenbank charset AL32UTF8
, die OracleTypeCHAR#getLength()
Methode gibt Ergebnisse, multipliziert mit Faktor 4 im Vergleich zu dem, was erklärt wird in Oracle-Objekt-Typ - Beispiel:
some_attribute varchar2(10)
Führen würde, in der Länge 40
, wenn die Länge 10
wurde wieder mit der früheren charset. Gibt es einen Weg, um die raw-Wert von PL/SQL, ohne Analyse OOT source-code?
- Sind Sie versuchen, um die Länge in Zeichen oder bytes? Je nach NLS_LENGTH_SEMANTICS, ein VARCHAR2(10) in Oracle kann deklarieren Sie eine variable speichern können 10 Zeichen an Daten (bis zu 40 bytes in den AL32UTF8-Zeichensatz) oder eine variable, die speichern kann, die 10 Byte Daten.
- Ich versuche, die Länge in Zeichen. Ich brauche diese Metadaten zur Generierung der JSR-303 (z.B. @Size(max = 10)) Anmerkungen, die sich auf Felder von Java-Entitäten, reflektieren die entsprechenden OOT. Für jetzt ist mein generator ist so konfiguriert, mit db-spezifischen Faktor für die Division jedes zurückgegebene Wert von OracleTypeCHAR#getLength () - Methode. Ich nehme an, dieser Faktor sollte auch abgerufen werden oracle-spezifische JDBC-Erweiterungen, allerdings weiß ich nicht wie. Sowieso das Standardverhalten von OracleTypeCHAR#getLength () - Methode widersprüchlich scheint mir.
InformationsquelleAutor morisil | 2011-02-18
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Zeichen für einen Zeichen-Spalte finden Sie in user_tab_columns.CHAR_LENGTH,
Diese Abfrage verwenden, um zu finden, die Zeichen, Länge der Spalte,