Announcement

Collapse
No announcement yet.

Umlaute in Input-Parameter in Stored Procedure

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

  • Umlaute in Input-Parameter in Stored Procedure

    Hallo,
    Wer kann helfen? (Andreas Kosch vielleicht?)
    Nachdem ich ansonsten leidlich gelernt habe, in InterBase mit deutschen Umlauten zu arbeiten, bleibt folgendes Problem für mich ungelöst:

    create procedure test_Procedure
    (buchst varchar(5) CHARACTER SET ISO8859_1)
    returns (zahl integer)
    as
    begin
    select count(*) from stammdat
    where familienname containing :buchst
    into :zahl;
    suspend;
    end;

    execute procedure test_procedure 'Ö'

    Ich erhalte bei Eingabe von Umlauten immer nur die Fehlermeldung:

    Arithmetic exception, numeric overflow, or string truncation
    Cannot transliterate character between character sets
    Statement: execute procedure test_procedure 'Ö'

    Wie kann ich erreichen, daß diese Prozedur auch mit Umlauten funktioniert?

    Ich hoffe auf Hilfe,
    Gruß, Lutz Herrmann

  • #2
    Hallo,

    ich habe das zum Test einmal nachgebaut (InterBase 6.0 und IBConsole 1.0.0.339):
    <pre>
    CREATE TABLE HERRMANN (
    ID INTEGER NOT NULL PRIMARY KEY,
    Buchst VARCHAR(5));

    INSERT INTO HERRMANN (ID,Buchst) VALUES (1,'Test');
    INSERT INTO HERRMANN (ID,Buchst) VALUES (2,'Ärger');

    SELECT * FROM HERRMANN WHERE Buchst CONTAINING 'Ä';

    CREATE PROCEDURE test_Procedure (buchst VARCHAR(5))
    RETURNS (zahl integer) AS
    BEGIN
    SELECT COUNT(*) FROM HERRMANN
    WHERE Buchst CONTAINING :buchst
    INTO :zahl;
    SUSPEND;
    END
    ^
    </pre>
    Ich erhalte das folgende Ergebnis: <br>
    a) execute procedure test_procedure 'Ü' = Ergebnis 0 <br>
    b) execute procedure test_procedure 'Ä' = Ergebnis 1 <br>
    Prinzipiell stellt der Parameter 'Ä' kein Problem für die aufgerufene Stored Procedure dar.

    P.S: Wurde der Zeichensatz bereits beim Erzeugen der Datenbank global für die komplette Datenbank definiert? Ich habe das in meinem Beispiel gemacht

    Comment


    • #3
      Hallo Herr Kosch,<br>

      Vielen Dank für den Tipp!<br>
      Das post scriptum hat es gebracht. Tatsächlich fehlte in den Metadaten die primäre globale Anweisung für den deutschen Zeichensatz.<br>
      Die Datenbank (richtig!) neu angelegt und ein Restore und das Problem ist tatsächlich beseitigt.<br>
      ... Vielleicht bin ich auch einer alten Konsole aufgesessen, als ich die Datenbank im letzten Jahr installiert habe?<br>
      Übrigens: Mein Kompliment zu Ihrem neuen Buch "Interbase Datenbankentwicklung mit Delphi"! Das hat einige Lücken geschlossen.<br>

      Mit freundlichen Grüßen,<br>
      Lutz Herrman

      Comment


      • #4
        Hallo,<br><br>
        zum Thema Zeichensatz für den deutschsprachigen Raum steht unter http://www.entwicklerforum.org/nuke/article.php?sid=6&mode=&order=0 ein Dokument für den Vergleich der Zeichensätze WIN1252 und ISO8859_1 zur Verfügung.<br><br>
        Beste Grüsse<br>
        Thomas Steinmaure
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment

        Working...
        X