Announcement

Collapse
No announcement yet.

Upper / Problem mit Umlauten, wenn angewandt auf Procedure Ergebnis

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Upper / Problem mit Umlauten, wenn angewandt auf Procedure Ergebnis

    Hi,
    <br>
    <br>folgende Problematik:
    <br>IB 6.0.1
    <br>
    <br>Wenn ich die Funktion upper auf das Ergebnis einer Stored Procedure anwende, so werden die Umlaute nicht berücksichtigt. Upper angewandt auf ein normales Tabellenfeld liefert jedoch ein korrektes Ergebnis:
    <br>
    <br>select
    <br>P_KDAuswahl.KD_Name as MyKD_Name,
    <br>upper(P_KDAuswahl.KD_Name) as x,
    <br>upper(KD.KD_Name) as y
    <br>from KD Join P_KDAuswahl ON KD.KD_ID = P_KDAuswahl.KD_ID
    <br>
    <br>Liefert
    <br>MyKD_Name = Töst (OK)
    <br>x = TöST (Falsch, hier hätte ich auch gerne TÖST)
    <br>y = TÖST (OK)
    <br>
    <br>Default Charachter der Datenbank = CHARACTER SET ISO8859_1
    <br>
    <br>Tabellen Def.:
    <pre>
    CREATE TABLE "KD"
    (
    "KD_ID" INTEGER NOT NULL,
    .
    .
    .
    "KD_NAME" VARCHAR(80) COLLATE DE_DE,
    .
    .
    .
    </pre>
    <br>
    <br>Proc Def.:
    <pre>
    ALTER PROCEDURE "P_KDAUSWAHL"
    RETURNS
    (
    "KD_ID" INTEGER,
    "KD_NAME" VARCHAR(130) CHARACTER SET ISO8859_1
    )
    AS
    Declare Variable KD_KLINIK SMALLINT;
    Declare Variable KD_ORT VARCHAR(50) CHARACTER SET ISO8859_1;.
    .
    .
    .
    </pre>
    <br>
    <br>In der Prozedurdefinition habe ich in meiner Verzweiflung die Character Definition nartäglich ergänzt (vorher standen hier keine Character Definitionen), leider ohne Erfolg.
    <br>
    <br>Habe ich irgend was vergessen bzw. was muß man anders machen, damit das funktioniert?
    <br>Danke schon mal für die Hilfe.
    <br>
    <br>mfg
    <br>PS

  • #2
    <br>Hallo Patrick,<br><br>
    wo das Problem genau liegt, kann ich dir auch nicht sagen! Aber um das zu umgehen, versuche doch UPPER innerhalb der StoredProcedure auszuführen und den Parameter so zurückzugeben!<br><br>
    Ich denke mal, das dürfte funtkionieren.<br><br>
    MfG<br>
    Carsten<br><br&gt

    Comment


    • #3
      Hallo Patrick,

      die Upper-Funktion funktioniert bei deutschen Umlauten nur korrekt, wenn bei der Definition des Zeichensatzes auch die passende Sortierreihenfolge <b>(Collate DE_DE)</b> mit angegeben wird.

      Das Problem ist nun, dass Interbase/Firebird genau das bei Parametern von StoredProcs nicht zuläßt.

      Mit einem direkten Eingriff in die Systemtabellen kann man das umgehen (hab ich vor längerer Zeit mal gemacht).

      Bevor ich dazu nähere Info's gebe teste ich noch ein klein wenig auf Risiken und Nebenwirkungen.

      Tschüß

      Torste

      Comment


      • #4
        Vielen Dank Carsten und Torsten.
        <br>
        <br>@Torsten:
        <br>>Bevor ich dazu nähere Info's gebe teste ich noch ein klein wenig auf Risiken und Nebenwirkungen.
        <br>
        <br>Bitte nicht für mich die Zeit verschwenden. Bevor ich an den Systemtabellen herum drehe versuche ich lieber noch einen zusätzlichen Rückgabeparameter zur Verfügung zu stellen (in der Prozedur), der den KD_Namen in Großbuchstaben zurück gibt.
        <br>
        <br>Weiß vieleicht jemand, ob dieses Phänomen auch bei IB 6.1.6 auftritt?
        <br>Noch eine Frage:
        <br>Wenn man schon default Character in der Datenbankdefinition festlegt, muß/sollte man dann noch in den Tabellen - oder Procedurdefinitionen zu jedem "Varchar" ein "CHARACTER SET ISO8859_1" festhalten (ein Collate DE_DE festzulegen in den Tabellen ist noch akzeptabel, aber...)?
        <br>Das würde ja schon fast ausufern, da man das ja z.B. auch bei den External Functions, Domains etc. machen müßte.
        <br>
        <br>mfg
        <br>P

        Comment


        • #5
          Hallo Patrick,

          die Default-Einstellung dürfte Datenbankobjekte gelten, solange nichts anders angegeben wird. Allerdings greift bei SP die Collate Anweisung eben nicht.

          Soweit ich weiß, funktioniert es bei keiner IB-Version.

          Tschüß

          Torste

          Comment

          Working...
          X