Laden...

Datentyplänge bei Ausgabeparameter im OracleClient 12.2 anders als bei OracleClient 11

Erstellt von inflames2k vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.324 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 6 Jahren
Datentyplänge bei Ausgabeparameter im OracleClient 12.2 anders als bei OracleClient 11

verwendetes Datenbanksystem: Oracle 11.2.0.1.0

Hallo,

in einer bei uns im Haus entwickelten Anwendung wird eine Prozedur aufgerufen, die seit Jahren mit dem OracleClient 11 korrekte Daten lieferte. Nach Update auf OracleClient 12 passen die Daten aber nicht mehr.

Die Prozedur liefert 2 Ausgabeparameter vom Typ "CHAR" zurück. Bisher wurde als Länge für die Parameter 8 bzw. 1 angegeben. - Bei Kollegen mit OracleClient 11, kommen dann auch 8 bzw. 1 Zeichen zurück.

Beim Kunden, sowie auf meinem Entwicklungsrechner mit OracleClient 12 scheint sich die Länge allerdings auf das doppelte geändert zu haben. Das heißt nur mit Länge 16 bekomme ich auch 8 Zeichen.

Kennt jemand das Problem und weiß, warum das so ist? Ich kann bei Oracle leider keine vernünftige Begründung finden.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

R
69 Beiträge seit 2009
vor 6 Jahren

Hi,

vielleicht CodePage Problem....

Gruß

Ron

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 6 Jahren

Wäre aber sehr merkwürdig. - Bei beiden Rechnern (einmal mit OracleClient 11 und einmal mit OracleClient 12) werden exakt die gleichen Session-Variablen zur Sprache, Bytelänge und zum Charset ausgegeben.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

5.658 Beiträge seit 2006
vor 6 Jahren

Und wie sehen die Einstellungen des Encodings für die betreffenden Tabellenspalten aus?

Weeks of programming can save you hours of planning

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 6 Jahren

Hallo,

es existieren keine "Spalten" in dem Sinne aus denen die beiden Ausgabeparameter generiert werden. Das heißt, es wird das Encoding der Client-Anwendung aus der Session verwendet. - Und das kann ja Grundsätzlich erst einmal nicht die Ursache sein.

Dennoch hier die Encodings:

  • Standardencoding Datenbank:
    Charset: WE8ISO8859P15

  • Encoding aus der Client-Session (Oracle 12 Client):
    Charset: WE8MSWIN1252

  • Encoding aus der Client-Session (Oracle 11 Client):
    Charset: WE8MSWIN1252

Wie man sieht gibt es bis auf den Encoding-Unterschied zum Server, der eigentlich keine Rolle spielen sollte kein Problem. Daher wundert mich dass die beiden Ausgabeparameter vom Typ "char" unterschiedliche Längen haben auf den jeweiligen Clients.

Vorstellen kann man sich das Verhalten wie folgt:


Anfrage-Länge     | Client 11                    | Client 12 
----------------------------------------------------------------------------------------
8 Zeichen            | "12345678"                 | "1234"
16 Zeichen          | "12345678        "         | "12345678"

Dieses oben dargestelle Phänomen wundert mich eben. Da ich keine klare Ursache finden kann.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |