Announcement

Collapse
No announcement yet.

Verbindungsserver - Oracle

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

  • Verbindungsserver - Oracle

    Hallo Forum,

    ich möchte eine SQL-Datenbank entwickeln, die mit aktualisierten Kundendaten aus unserer ERP-Software arbeitet (=Oracle-DB).

    Nun möchte ich dies über einen Verbindungsserver realisieren und habe hierzu über den ODBC-Treiber "Microsoft ODBC for Oracle" die Connection hergestellt.

    Nun ist es leider der Fall, dass z. Bsp. beim Geburtsdatum eines Kunden in der Oracle Tabelle 23.01.203 anstatt 23.01.1923 eingegeben wurde.

    Aufgrund dieses Eingabefehlers, bricht die Abfrage

    Code:
    SELECT * FROM WODIS..WODIS.TMI_PERSONEN;
    mit der Fehlermeldung "Fehler beim Konvertieren von Datentyp DBTYPE_DBTIMESTAMP in datetime." ab.

    Wie kann ich diesen Fehler abfangen???????


    Hab folgendes schon probiert.

    Code:
    SELECT  PER_KEY, PER_NAME1, PER_NAME2, PER_VORNAME, PER_NAME3, CASE WHEN ISDATE(PER_GEBDAT) = 1 THEN PER_GEBDAT ELSE NULL END
     FROM WODIS..WODIS.TMI_PERSONEN;

  • #2
    Originally posted by joghurtjens View Post
    Nun möchte ich dies über einen Verbindungsserver realisieren und habe hierzu über den ODBC-Treiber "Microsoft ODBC for Oracle" die Connection hergestellt.
    Das ist doch schon vermutlich das Problem. Besorg dir einen aktuellen ODBC-Treiber von Oracle. Der MS-Treiber für Oracle sind oft nur Schrott.

    Comment


    • #3
      Originally posted by Bernhard Geyer View Post
      Das ist doch schon vermutlich das Problem. Besorg dir einen aktuellen ODBC-Treiber von Oracle. Der MS-Treiber für Oracle sind oft nur Schrott.
      OK :))) Ich probier's.
      Zuletzt editiert von joghurtjens; 30.06.2009, 13:56.

      Comment


      • #4
        Ich tippe eher auf etwas anderes:
        23.01.203
        Der Sql Server bis Version 2005 unterstützt nur Datumswerte ab 01.01.1753; 203 geht also nicht.

        Wenn es nur zur Anzeige benötigt wird, selektiere es Oracle-seitig als String ( to_char(datum, 'dd.mm.yyyy') oder bereinige eure Daten.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Hallo,

          ich denke, Olaf hat das Problem erfasst.

          Nun möchte ich diese Oracle-Tabelle (WODIS..WODIS.TMI_PERSONEN), die durch Eingabefehler immer wieder Daten < 01.01.1753 enthalten könnte, aus unserem ERP-System aber immer aktuell in meine SQl-Server-basierte Anwendung einspielen (durch INSERT und UPDATE).

          Diese Tabelle soll tblPersonen heißen.

          Wie kann ich dies realisieren???
          Zuletzt editiert von joghurtjens; 01.07.2009, 09:19.

          Comment


          • #6
            Wenn Dir das Datum als VarChar Wert reicht, kannst Du es im Select auf Oracle-Seite bereits konvertieren lassen => to_char(datum, 'dd.mm.yyyy')

            Sonst musst Du (ebenfalls Oracle-Seitig) eine Fallunterscheidung machen und bei Datum < 1.1.1753 ist NULL zurückliefern.
            Ich meine da dafür gibt es den Befehl DECODE, kenne mich aber mit Oracle nicht so aus.
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Mmmhh! Kann ich die Konvertierung vom SQL-Server aus in Oracle veranlassen?

              Problem ist nämlich, dass ich auf Oracle DB nur begrenzte Rechte besitze (Tabelle nur im Lesezugriff).

              Comment


              • #8
                Das kannst Du, z.B. kannst Du mit OpenQuery arbeiten, um ein SQL Statement an Oracle durchzureichen und mit dem Ergebnis weiter zu arbeiten:

                [highlight=SQL]SELECT *
                FROM OPENQUERY(LinkedServerName, 'SELECT CASE WHEN DatumFeld < to_date(''17530101'', ''YYYYMMDD'') THEN NULL ELSE DatumFeld END AS MyDate FROM Tabelle) AS Qry
                [/highlight]
                Olaf Helper

                <Blog> <Xing>
                * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                Comment

                Working...
                X