SYSPACKSTMT Â UNICODE
- Dieses Thema hat 6 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 15 Jahre von
Anonym.
-
AuthorPosts
-
9. Oktober 2006 um 11:57 Uhr #2730
AnonymInaktivHAllo liege DB2-Gemeinde
wenn man im DB2 New Function Mode v.8. ist werden ja alle DBRM-Mebers als UNICODE in der SYSPACKSTMT abgelegt.
mit entsprechenden DB2-Mitteln kann man die wieder sichtbar machen – das wurde heir schon diskutiert. Nun ist es aber so,
dass sich auch alte Einträge in der SYSPACKSTMT befinden – also Infos welche nicht in Unicode abgelegt sind.Meine Frage wäre nun: Gibt es eine Möglichkeit festzustellen, ob eine Zeile in der SYSPACKSTMT unicoded ist oder nicht.
— woran kann man das erkennen- Sicher – wenn ich das Lese SQL-Stmt absezte so kann ich dies per Auge sehen – ich möchte es
aber immer korrekt haben und nicht evtl. einen 2ten SQL-absetzen weil der erste die Daten in Unicode bringt.Vielleicht weiss das jemand
Tschau
Zefrim
20. Oktober 2006 um 9:09 Uhr #3125
AnonymInaktivFalls das noch jemand interessiert  – ich hab die Lösung (glaube ich zumindest)
Man liest die 9.Stelle der sysibm.syspackstmt
Man muß allerdings in der Where-bedingung auch auf die Stmt-Nr,Package-.name,collid usw
abfragen. Dann sortiert man die Ergebnismenge nach dem feld SEQNO und in der ersten gelesenen ROW
muß man die 9-.Stelle abfragen: HEX(SUBSTR(STMT , 9 , 1 ))
wenn daas Feld folgende Werte enthält:
IF FELD >= ‚C1‘ & FELD <= ‚E9‘ THEN CODE = ‚E‘ Â
IF FELD >= ‚F0‘ & FELD <= ‚F9‘ THEN CODE = ‚E‘ Â
IF FELD >= ’81‘ & FELD <= ‚A9‘ THEN CODE = ‚E‘ Â
dann handelt es sich um ein Package mit EBCDIC-Code andernfalls um Unicode.
Nun kann mann bei Unicode-packages mit dem CAST-befehl die syspackstmt lesenLets rock
Zefrim
20. Oktober 2006 um 10:12 Uhr #3399
AnonymInaktivHigh Zefrim,
funktioniert der CAST überhaupt, wenn die Spalte mit FOR BIT DATA definiert ist ?
20. Oktober 2006 um 11:38 Uhr #3571
AnonymInaktivJa – das funktioniert.
man muß sich aber sicher sein, daß es sich um Unicode handeltdeshalb die erste abfrage auf die stelle 9
Zefrim
20. Oktober 2006 um 15:41 Uhr #3694
AnonymInaktivdanke für die Info !
17. September 2008 um 15:05 Uhr #3779
AnonymInaktivHi zefrim,
die Abfrage ist leider nicht ganz wasserdicht. Sie funktioniert so lange, wie das SQL in eine Row der Tabelle passt >:(
Bei Umbrüchen kann natürlich alles mögliche an Stelle 9 des Feldes STMT stehen ():, ….Wenn jemand nen Tipp hat, her damit 😉 Sonst weiss ich, was ich morgen zu tun habe.
Danke
Alexander18. September 2008 um 7:30 Uhr #3834
AnonymInaktivnur anhand der PACKSTMT kann nicht entschieden werden, welcher STMT-Inhalt Unicode ist oder nicht.
Ich habe mal die Hex-Werte der Stelle 9 der Einträge (join mit SYSPACKAGE) mit PC_TS vor und nach Umstellung auf NFM verglichen:Folgende Hex-Werte kamen in beiden Zeichensätzen vor:
C3
C4
C6
C9
D4
D6
D7
D9
E2
E4
F1
BC
00
01
07
2E
28
31
4B
4C
4D
43
44
45
46
47
48
49
50
52
53
54
55
60Das 4F nur in Unicode, der Rest nur in EBCDIC.
Meiner Meinung nach kann die Entscheidung also nur am PC-Timestamp festgemacht werden. Richtig??
Alexander
-
AuthorPosts
You must be logged in to reply to this topic.