Ankündigung

Einklappen
Keine Ankündigung bisher.

Oracle- Drop einer Tabelle (IF EXISTS)...

Einklappen

Neue Werbung 2019

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

  • Oracle- Drop einer Tabelle (IF EXISTS)...

    Hallo,

    Ich möchte gerne eine Datei entwickeln die automatisch die SQL-Datenbank erstellt. Nun habe ich folgendes Problem:

    Wenn noch keine SQL-Tabelle mit dem Namen "EMAIL_VALID" bekomme ich folgende Fehlermeldung:

    Warning: oci_execute(): ORA-00942: Tabelle oder View nicht vorhanden...

    Ich denke das liegt daran das beim Drop der Tabelle ein IF EXISTS fehlt. aber in Oracle geht das leider nicht so einfach... Hast Du eine Idee (hab schon gegoogelt).






    PHP-Code:
    <?php
    include "conn/oci_conn.php";

    $sqlDrop oci_parse($conn"DROP TABLE EMAIL_VALID");

    oci_execute($sqlDrop);


    $sqlCreate oci_parse($conn"
        CREATE TABLE EMAIL_VALID(
        eid numeric(11)   NOT NULL,
        email varchar2(255) NOT NULL UNIQUE,
        password varchar2(255) NOT NULL,
        activation varchar2(255) NOT NULL UNIQUE)
    "
    );


    oci_execute($sqlCreate);






  • #2
    Dann prüfe halt (in den Katalogen), ob die Tabelle existiert. Oder nutze PostgreSQL:

    Code:
    test=*# create table genx71 (i int);
    CREATE TABLE
    test=*# drop table if exists genx71;
    DROP TABLE
    test=*# drop table if exists genx71;
    NOTICE:  table "genx71" does not exist, skipping
    DROP TABLE
    test=*#
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Leider hat dies nicht gebracht... (

      Kommentar


      • #4
        MOD: Verschoben von PHP-Einsteiger
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Lasse diesen Fehler in Leere laufen.
          PHP-Code:
          @oci_execute($sqlDrop);  // suppress Warning if TABLE does not exist 
          oder frag den Fehler ab und reagiere entsprechend darauf https://www.php.net/manual/en/function.oci-error.php.

          WICHTIG
          Grundsätzlich sollte mit der gewollten Unterdrückung von Fehlern vorsichtig umgegangen werden, da wirkliche Fehler dann nicht mehr erkannt werden und schwer zu finden sind. Besser ist es allemal eine vernünftige Fehlerbehandlung zu haben.

          Kommentar


          • #6
            Hallo, Viele Dank für den Tipp...

            Ich habe das Problem wie folgt gelöst (nicht schön aber es funktioniert):

            PHP-Code:
            <?php
            error_reporting
            (0);

            include 
            "conn/oci_conn.php";

            $stid oci_parse($conn"DROP TABLE EMAIL_VALID");
            $r oci_execute($stid);

            $sqlCreate oci_parse($conn"
                CREATE TABLE EMAIL_VALIDX(
                eid numeric(11)   NOT NULL,
                email varchar2(255) NOT NULL UNIQUE,
                password varchar2(255) NOT NULL,
                activation varchar2(255) NOT NULL UNIQUE)
            "
            );

            oci_execute($sqlCreate);

            Kommentar


            • #7
              Warum nicht PDO mit Exception-Handling verwenden?

              Kommentar

              Lädt...
              X