Announcement

Collapse
No announcement yet.

Fehler ORA00933 nach 2.Löschaktion

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

  • Fehler ORA00933 nach 2.Löschaktion

    Das ist schon merkwürdig !

    Ein DELETE-Befehl (erster innerhalb von Transaktion mit 3 Lösch-
    SQLs ) gelingt beim erstenmal einwandfrei. Wenn das betreffende
    Formular danach geschlossen und wieder geöffnet wird, gelingt auch die
    folgende Löschaktion.
    Wenn das Formular zwischen den Löschaktionen n i c h t geschlossen
    wird, scheitert die 2.Aktion mit :
    'ORA00933 SQL-Befehl nicht korrekt beendet' ist doch wohl Schwachsinn !

    Habe nach COMMIT alle Queries u. auch d. DB geschlossen, auch noch
    SESSION.DatabaseClose u. SESSION.DISCONNECT gesetzt : es hilft absolut nix

    Langsam habe ich auch hier wieder die BDE in Verdacht..

    Wer weiß Rat ?

    MfG
    Wolf

  • #2
    Hallo,<br>
    <br>
    normal gibt es keine Probleme. Was nimmst Du ?<br>
    Request Live Query oder Table. Schau Dir mal<br>
    im SQL-Monitor an was (SQL-Stat. ) die BDE zu Oracle schicken<br>
    will. Das sollte erstmal weiterhelfen.<br>
    <br>
    Viele Grüße<br>
    <br>
    Henry Wolf<br&gt

    Comment


    • #3
      lt. ORACLE Fehlercode geht es um die Anzahl der rückgegebenen
      Sätze bei einer IN-Klausel :
      Wenn nur 1 Satz existiert, käme diese Fehlermeldung..

      mein Code:
      <PRE>
      //- Messwertblöcke werden wegen notwendiger Referenzen zuerst gelöscht
      vSQL := 'DELETE FROM ' + TBL_MESSWERTE + ' ms WHERE ms.speznr IN ' +
      '( SELECT es.speznr FROM '+ TBL_ESPEZIFIK + ' es, ' +
      TBL_EINGANG + ' eg WHERE eg.eingnr = EingNr AND ' +
      ' eg.bereich = Bereich AND es.eingrnr = eg.eingnr )';

      With QryEingSQL do
      begin
      Close;
      SQL.Add(vSQL);
      ParamByName('pEingNr').AsString := IntToStr(vEingNr);
      ParamByName('pBereich').AsString := vBereich;
      Prepare;
      try
      ExecSQL;
      except
      on E : Exception do
      begin
      if standd.ta_flag then
      begin
      frmStart.App_Db.Rollback;
      frmStart.App_Db.Close;
      end;
      frmStart.fehler_routine('Einträge Messwerte löschen',E, ERR_CONT );
      end;
      end;
      </PRE>

      die messwertblöcke enthalten standardmäßig immer 10 Sätze !

      Wenn ich jetzt erst zählen und dann löschen soll, kann ich auch gleich
      eine Leseschleife machen und die SÄtze einzeln löschen...

      aber vielleicht ist das wieder mal ein "falscher" Fehler in TQuery oder BDE ????????? :-o

      Weiß jemand was dazu ?

      MfG
      Wol

      Comment


      • #4
        Hallo Wolf,

        ich kann dir zwar nicht helfen, aber ich kämpfe mit dem gleichen Problem - allerdings beim Zugriff über ADO. Ich habe in einer Anwendung mehrere TADODataSets, die teilweise über Parameter auf die DB zugreifen. In nicht nachvollziehbaren Abständen und bei unterschiedlichen Aktionen - es ist nicht erkennbar warum - kommt genau dieser Fehler: ORA00933: SQL-Command not properly ended. Und im nächsten Augenblick funktioniert es wieder. Ich habe fast das Parameterhandling im Verdacht das dort nicht immer alles korrekt ankommt - vor allem bei Master-Detailbeziehungen die über Parameter abgewickelt werden. Um das aber rauszukriegen bräuchte ich ein Tool was die and die DB übergebenen SQL-Statements protokolliert um mal nachzusehen ws da eigentlich passiert. Kennt jemand sowas? oder kann ich das über Oracle selber abwickeln?

        Gruß Fal
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          hallo,falk,

          irgendwie hing das bei mir auch mit aktiven Queries in aktiven Forms
          zusammen, also entweder Stackprobleme oder BDE-Probleme bei IN-Klausel

          Arbeite mit Direktzugriff der BDE auf ORACLE 8.1.5 (also kein ODBC !)

          man muß sich irgendwelche LOG's anschauen, mehr weiß ich dazu
          momentan auch nicht..

          Bei den LOG's ist es wohl auch noch so, daß es Schalter gibt, was
          überhaupt geloggt wird und wohin, und dann muß müßte man diese
          auch noch verstehen.. :-))

          habe aus zeitgründen erstmal die SCAN-Methode codiert, läuft
          absolut zuverlässig..

          Würde das Problem mit der "vornehmen" mengenorientierten SQL-Form
          ( DELETE ..FROM..WHERE .. IN(SELECT...WHERE...)
          gerne 'mal lösen :-o)

          MfG
          Wol

          Comment


          • #6
            noch n Gedanke : geht ein JOIN in der DELETE-Klausel ?
            dann könnte man wohl auf IN(SELECT.. verzichten

            Hallo SQL-Experten ..

            MfG
            Wol

            Comment


            • #7
              Hallo,

              ich habe das gleiche Problem mit BDE und Interbase 6.01.
              Ich glaube auch, dass dies ein Problem der BDE ist.
              Hat einer von Euch schon eine Lösung oder eine Spur gefunden.

              Gruß Mari

              Comment

              Working...
              X