Announcement

Collapse
No announcement yet.

ORA-00937: not a single-group group

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

  • ORA-00937: not a single-group group

    Bei Ausfuehern von SQL Statements der volgenden Art erhalte ich eine fuer mich unerklaerbare Fehlermeldung:

    Umgebung:
    Delphi6, TADODataSet oder auch TbetterDataSet, und natuerlich Oracle Datanbank.

    SQL:
    SELECT MAX(MYVALUE) FROM MYTAB WHERE MYCOL = :MYPARAM

    Fehlermeldung:
    "ORA-00937: not a single-group group"

    Wenn das Statement ohne Parameter ausgefueht wird, dann funktioniert die Sache jedoch wohl:
    SELECT MAX(MYVALUE) FROM MYTAB WHERE MYCOL = MYVALUE

    Mit der BDE wird dieses Statement mit Parameter ohne Fehler ausgefuehrt.

    Ich aendere gerade ein sehr umfangreiches Programm vom BDE hin zu ADO und es ist beinahe unmoeglich alle Statements zu suchen und zu aendern die ein count() min() max() min() enthalten…

    Ich bin dankbar fuer jeden Hinweis…

    Danke

  • #2
    Hier noch weitere (wichtige) Information
    Ich benutze den “Microsoft OleDB Provider for Oracle”
    Beim Benutzen des alternatieven “Oracle Providers for OleDB” erscheint keine Fehlermelung. (ich bin jedoch gezwungen den Microsoft Provider zu benutzen)

    Wenn man das SQL statement beim Oracle Server abfaengt, dann kommt da das volgende Statement an:
    SELECT MAX (buildnumber), versie.ROWID
    FROM versie
    WHERE versienummer = :v00001

    Der Provider hat hier anscheinend eine hidden Feld “versie.ROWID” hinzugefuegt.

    Das bei diesem Statement diese Fehlermeldung erscheint ist vollkommen korrekt.
    Wie kann ich alse verhindern, das dieses hidden Feld hinzugefuegt wird?
    Hierzu bin ich beim Stoebern im Internet auf eine Bemerkung gestossen:

    “The DBPROPSET_MSDAORA_ROWSET property DBPROP_MSDAORA_DETERMINEKEYCOLUMNS needs to be set to false”

    Wie kann ich dieses Propertie setzen?

    In den Properties von der TADOConnection kommt sie nicht voor, noch in den Properties des
    Recordset: _Recordset aus dem “ADOConnection1WillExecute” kann ich sie nicht finden!

    Will

    Comment


    • #3
      Mit der RowID probiert Microsoft hier den Update Prozess zu vereinfachen siehe hierfuer
      http://www.kbalertz.com/kb_258997.aspx
      Die Statements mit einer Group-Funktion sind jedoch nicht fuer ein Update bestimmt. Das bedeutet, das ich den LockType hier auf ltReadOnly oder ltUnspecified setzen kann. Mit dieser Einstellung werden keine RowIDs vonn der DatenBank gefragt, und das Statement erzeugt keine Fehlermeldung

      Comment

      Working...
      X