[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2011
    Beiträge
    29

    SQL-Statement prüfen => eMail senden

    Hallo zusammen,

    ich möchte regelmäßig (scheduled) prüfen, ob ein bestimmtes SQL-SELECT eine leere Menge liefert und falls nein, mir eine Mail mit dem Ergebnis des SELECT senden.

    Meine erste Idee war, das ich in einem CL den Query Manager benutze um eine Datei zu schreiben, prüfe ob die Datei leer ist und dann eine Mail sende.

    Das erscheint mir aber sehr umständlich, gibt's einen einfacheren Weg?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Der weg ist nicht umständlich sondern der Richtige.
    Was nützt mir ein vorheriger "Select count(*) ...", wenn ich im Falle von > 0 dann doch den kompletten Select benötige.
    Anders mache ich das ja auch nicht.
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    gelöscht!!!

    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
    Apr 2011
    Beiträge
    29
    Fein, dann stimmt meine Richtung schonmal :-)

    Ich führe also die QMQRY aus und schreibe das Ergebnis in einen Member (*REPLACE). Das Ergebnis kopiere ich mittels CPYTOPMPF ins IFS und prüfe dabei gleich ob die Quelle Datensätze enthält:
    Code:
     MONMSG MSGID(CPF2817) CMPDTA(CPF2869) EXEC( +                      
      SNDDST TYPE(*LMSG) TOINTNET(('meine@mail.de' *PRI)) + 
      DSTD(File empty) LONGMSG('Das Ergebnis der QMQRY war leer '))                   
     ENDDO
    Das funktioniert aber nicht, ich vermute mal das keine oder eine andere Escape-Message als 2817 gesendet wird? Macht das nur CPYF und CPYTOPMPF sendet vielleicht eine andere Escape-Message?

    Schönen Feiertag schonmal!

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    RTVMBRD mit Parameter NBRCURRCD() liefert die Anzahl Datensätze in einer Teildatei.

  6. #6
    Registriert seit
    Feb 2008
    Beiträge
    104
    der CPYTOIMPF sendet keine Escape-Message, wenn die Ausgangsdatei keine Datensätze enthält. Es gibt nur die Meldung:
    Alle Sätze aus Datei xxx in Bibliothek kopiert, auch wenn keine zum Kopieren vorhanden waren (V5R4)

    Es bleibt also wohl nur der Weg mit RTVMBRD

    KH

  7. #7
    Registriert seit
    Oct 2004
    Beiträge
    251
    Da QMQRY immer eine Datei erzeugt, verwende folgende "einfach" Trick um die Datei auf den Inhalt zu prüfen:

    Code:
                 PGM        PARM(&QMNAME &USER)                          
    /*                                                                 */
    /*    UPRO für das Ausführen von QM-Abfragen und der Versendung    */
    /*    an einen Benutzer wenn Daten gefunden wurden.                         */
    /*                                                                 */
                 DCL        VAR(&QMNAME) TYPE(*CHAR) LEN(10)             
                 DCL        VAR(&USER) TYPE(*CHAR) LEN(10)               
                                                                         
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(FEHLER))     
    /*                                                                 */
    /*           Altes ev. vorhandene Ausgabedatei weglöschen          */
                 DLTF       FILE(QRYOBJ/&QMNAME)                         
                 MONMSG     MSGID(CPF0000)                               
    /*                                                                 */
    /*           QM-Query ausführen, Ausgabedatei gleich benennen      */
                 STRQMQRY   QMQRY(QRYOBJ/&QMNAME) OUTPUT(*OUTFILE) +     
                              OUTFILE(QRYOBJ/&QMNAME)                    
    /*                                                                 */
    /*           Tricklösung: Um keine leeren Dateien zu verschicken   */
    /*           mit RGZPFM einen CPF bei leerer Datei provozieren     */
                 RGZPFM     FILE(QRYOBJ/&QMNAME)                         
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDE))       
                 CVT2PC     LIB(QRYOBJ) FILE(&QMNAME) USER(&USER) /* +   
                              Outfile an übergebenen Benutzer schicken */
                 GOTO       CMDLBL(ENDE)                                 
    /*                                                                 */
     FEHLER:     SNDMSG     MSG('Fehler in CHKLAGUPCL!') TOMSGQ(ZENERRQ) 
    /*                                                                 */
     ENDE:       ENDPGM
    Statt dem CVT2PC (Eigenbau für Exceloutput) kannst du dann das SNDDST einsetzen.

    Da wir relativ viele Kontrollabfragen benötigen, habe ich das in ein Upro ausgelagert. Damit reduziert sich der Abruf auf:
    CALL PGM(....UPCL) PARM(QMQERY USER)

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ein einfacher RTVMBRD NBRCURRCD (Anzahl Sätze) ist da erheblich einfacher und man braucht keine Tricks!
    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

  9. #9
    Registriert seit
    Apr 2011
    Beiträge
    29
    Hab's mit RTVMBRD und NBRCURRCD implementiert, funzt einwandfrei.
    Danke allen!

Similar Threads

  1. Dynamisches SQL in einem CL erstellen
    By Sony in forum IBM i Hauptforum
    Antworten: 27
    Letzter Beitrag: 20-07-09, 21:48
  2. SQL Statement zum Prüfen, ob AS400 verfügbar
    By GutmannHGW in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-02-08, 13:20
  3. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  4. SQL Statement
    By juergenkemeter in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 15-11-04, 12:15
  5. SQL Statement
    By Pia in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-04-02, 15:24

Berechtigungen

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