[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    237

    Question SQL-Fehler beim CAST

    Hallo,

    wir haben heute eine PHP-Anwendung unter Zend-Server (5.6.0) in PHP (5.3) auf einer 520 unter V5R4 laufen.
    Dieses System wird ersetzt durch eine Power7 mit V7R1.

    Nun werden beim Update Workfelder alpha in die Datenbank (numerisch) gestellt.
    Auf dem alten System haben die Zahlen innerhalb der Anwendung als Dezimalpunkt auch ein Komma.
    Lässt man dies auf dem neuen System laufen bekommt man einen CAST-Fehler.

    Ersetzt man nun das Komma durch einen Punkt, so klappt der Update.

    Kann man das irgendwo einstellen, das hier auch der Dezimalpunkt ein Komma ist ?
    Liegt das in einer Config-Datei irgendwo vergraben ?
    Der Systemwert beider Maschinen QDECFMT steht auf "2"

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    In der Verbindungseigenschaft der Connection gibt man das Dezimalformat an.
    Hier musst du leider in die Doku deiner PHP-Verbindung (ggf. php i5 Library o.ä.) nachsehen.

    Allerdings frage ich mich, warum du zum Update/Insert Alpha-Felder und keine numerischen Felder verwendest.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Gibst du das SQL inkl. Werte als String an?
    Oder verwendest du die BIND Funktionen (z.B. db2_bind_param).
    Über die php.ini global oder zur Laufzeit kannst du die Spracheinstellungen setzten:
    http://be2.php.net/manual/en/intl.co...default-locale

    lg Andreas

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    237
    Hallo,

    ja der SQL wird als string übergeben.
    Kollege konnte das Problem lösen, in dem er beim berechnen des Wertes ein floatval() herum gesetzt hatte.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Mittels db2_bind_param kann man einen Parameter "?" an eine Variable binden.
    Dies enthebt mich der Parameter Dateformat und Decimalformat des ConnectionStrings.
    Da aber mit einem aufbereiteten SQL gearebitet wird, muss man sich leider an die Connection-Parameter halten. Date ist Default vom System z-.B. in TT.MM.JJ und das Decimelformat Default Point.
    Eine ToString-Methode arbeitet im Standard aber mit der CurrentCulture (o.ä.) und in Deutschland im Zweifel mit Komma.
    Noch schlimmer wird es, wenn die Session die Kultur abhängig vom User macht und mal Komma oder Punkt ist.
    Übrigens sind SQL's mit gebunden Parametern schneller, da der ganz Sysntaxcheck und Zugriffsanalyse entfällt.
    Seit 6.1 (ggf. auch 5.4) ersetzt SQL automatisch alle Werte in "?" um so einen bereits analysierten SQL schneller wiederzufinden.
    Trotzdem sind gebundene Parameter grundsätzlich effektiver und daher zu bevorzugen (man denke nur an die Hochkommaverdoppelung bei Zeichenfolgen).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Sporadischer Fehler beim Kopieren vom IFS ins QNTC
    By ChMüller in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 21-04-17, 09:10
  2. DDM-File auf SAP-Tabelle/ Fehler beim Close
    By stemmerter in forum NEWSboard SAP
    Antworten: 2
    Letzter Beitrag: 23-11-11, 09:13
  3. Fehler beim GET im FTP
    By malzusrex in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 23-04-03, 17:15
  4. IPL und Fehler beim NetServer-Start
    By lemmi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 10-07-02, 12:07
  5. Fehler beim Beenden, cwblemsrv.exe
    By Tobias in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 30-01-02, 11:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •