Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Oracle PHP internes Problem?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Oracle PHP internes Problem?

    Hallo,

    habe eine kurze Frage. Hat jemand schon mal Probleme mit der PHP Schnittstelle zu Oracle probleme gehabt?

    Hab einen komischen Fehler:

    MERGE INTO AdUser USING dual ON( NAME='1' ) WHEN MATCHED THEN UPDATE SET NAME1='gg' WHEN NOT MATCHED THEN INSERT VALUES('1' ,'bla')

    Wenn ich das Statement über SQL+ feuere geht es, in PHP beschwert er sich das ich versuche den Unique-Key zu ändern.

    Gruß

  • #2
    Den Oracle "MERGE" benutze ich derzeit nicht, aber welche

    - PHP-Version (5.x.x?)
    - ORACLE-Version (10g?)
    - PHP-Extention (PECL, PDO ?)

    ist bei Dir aktiv?

    Grüße
    Thomas

    Kommentar


    • #3
      Ah Sorry ganz vergessen,

      Ich nutze:

      PHP 5.3.1
      Oracle 10g
      und Extension php_oci8, pdo

      Kommentar


      • #4
        Zitat von tarian Beitrag anzeigen

        Hab einen komischen Fehler:

        Für meinen Test in der PL/SQL Developer habe mir mal folgende Tabelle dazu angelegt:

        Code:
        CREATE TABLE test_user (
         id INT NOT NULL,
         name VARCHAR2(10) NOT NULL
        );
        
        MERGE INTO test_user USING dual ON( id = 1)
         WHEN MATCHED THEN UPDATE SET NAME='gg' 
         WHEN NOT MATCHED THEN INSERT VALUES(1 ,'bla');
        
        Done!
        So funktioniert er in der Konsole.
        Ich teste noch den PDO mit 10g und melde mich gleich wieder...

        Grüße
        Thomas

        Kommentar


        • #5
          So, also bei mir auf dem Entwickler-PC funktioniert es, leider nicht so aktuelle Versionen wie bei Dir.

          - PHP 5.2.3
          - extension=php_pdo.dll
          - extension=php_pdo_oci.dll
          - Oracle 10gR2

          Code:
            $dbh->exec("
            MERGE INTO test_user USING dual ON( id = 1)
             WHEN MATCHED THEN UPDATE SET NAME='gg' 
             WHEN NOT MATCHED THEN INSERT VALUES(1 ,'bla')
            ");
            $dbh->exec("COMMIT");
          Grüße
          Thomas

          Kommentar


          • #6
            ...

            Fehler gefunden. Es lag an meiner Tabelle. Hatte die vor etlicher Zeit angelegt und den Primary key falsch gesetzt. Jetz funktioniert es.

            Weiterer Tipp: benutzt Varchar2() nicht Char() wenn ihr den Primary Key auf ein char Feld legt.

            Sorry für die Umstände

            Kommentar

            Lädt...
            X