[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2002
    Beiträge
    19

    embedded sql - Delete über mehrere Dateien

    Hallo zusammen,

    ist es möglich per embedded sql im RPG Datensätze aus mehreren Dateien zu löschen ?

    Beispiel:

    Ich habe 2 Dateien, die über ein Schlüsselfeld miteinander verknüpft sind.
    Nun möchte ich alle Sätze aus beiden Dateien löschen, deren Datum älter als ein Stichtag sind.
    Das Datumsfeld habe ich aber nur in Datei 1.

    SQL sähe meiner Meinung nach normalerweise so aus:

    delete datei1, datei2 from datei1, datei2 where datei1.idx = datei2.idx and datei1.datum < stichtag

    wenn ich nun im SEU das so eingebe
    /EXEC SQL DELETE DATEI1, DATEI2 (...)
    erhalte ich nen Fehler: "Token DATEI1 ungültig. Gültige Token: FROM."

    Frage: Wird das löschen über mehrere Tabellen nicht unterstützt ?

  2. #2
    Registriert seit
    Nov 2002
    Beiträge
    19
    Sorry, Doppelposting.
    Das Forum war total langsam. Habe deshalb den Beitrag nochmal abgeschickt... Scheinbar wurde der erste aber doch akzeptiert.
    Würde einer der Moderatoren das doppelte Posting bitte löschen ?
    Danke !

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    mit einem DELETE-Statement können immer nur Datensätze aus einer einzigen Tabelle/View (bzw. physischen Datei) gelöscht werden.

    Für Deine Aufgabenstellung benötigst Du einen Cursor, der betroffenen Sätze der einen Datei einliest. Anschließend werden die zugehörigen Sätze in der zweiten Datei gelöscht. Zum Schluß wird der eingelesene Datensatz der 1. Datei gelöscht.

    Mit Instead of Triggern ist es zwar möglich einen Delete auf eine SQL View, die aus mehreren verknüpften Dateien besteht abzusetzen, aber im Trigger-Programm muss jede Datei/Tabelle einzeln bereinigt werden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    sorry, dass ich dir ausgerechnet in deinem Jubiläumsposting widersprechen muss:
    das Zauberwort heißt hier referential constraint

    D*B

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Hallo,

    mit einem DELETE-Statement können immer nur Datensätze aus einer einzigen Tabelle/View (bzw. physischen Datei) gelöscht werden.

    Für Deine Aufgabenstellung benötigst Du einen Cursor, der betroffenen Sätze der einen Datei einliest. Anschließend werden die zugehörigen Sätze in der zweiten Datei gelöscht. Zum Schluß wird der eingelesene Datensatz der 1. Datei gelöscht.

    Mit Instead of Triggern ist es zwar möglich einen Delete auf eine SQL View, die aus mehreren verknüpften Dateien besteht abzusetzen, aber im Trigger-Programm muss jede Datei/Tabelle einzeln bereinigt werden.

    Birgitta
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    @Dieter

    das Zauberwort heißt hier referential constraint
    Dazu müssten zunächst einmal Referentielle Integritäten definiert und eingerichtet sein.

    Ich könnte wetten, dass dies hier nicht der Fall ist.

    Bislang bin ich nur bei einem einzigen Kunden über referentielle Integritäten gestolpert. Vielfach ist noch nicht einmal bekannt, was unter Referentiellen Integritäten zu verstehen ist und wenn es bekannt ist, dann ist es viel zu komplex und umständlich Integritäten in die bestehenden gewachsenen Datenbank-Strukturen einzubinden. Ohne vernünftiges/durchdachtes Datenbanken-Design besteht kaum eine Chance Integritäten ordentlich einzubinden. Das kostet Zeit und Geld und im Gegensatz zu irgendwelchen GUIs, die über die scharz/grünen Bildschirme gestülpt und dann Modernisierung bezeichnet werden, sieht dabei man noch nichteinmal etwas.

    "... und was ich net' seh' kann ich net' verkaufe'!" (Zitat Vertriebsmensch als es um das Thema Datenbankenmodernisierung ging!)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Trotzdem reichen genau 2 Deletes:

    delete datei2 where idx in (select idx from datei1 where datum < stichtag)

    delete from datei1 where datum < stichtag
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    das versteht sich wohl von selber... oder eingerichtet werden, aber warum fragt da wohl jemand...frag ich mich...



    Zitat Zitat von B.Hauser Beitrag anzeigen
    @Dieter


    Dazu müssten zunächst einmal Referentielle Integritäten definiert und eingerichtet sein.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 12:01
  2. SQL Case von mehreren Dateien
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-08-06, 09:34
  3. RPG mit Embedded SQL, JOIN ..
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-06-06, 12:14
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Character verbinden in Embedded SQL
    By e_sichert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-05-06, 10:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •