[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    SQL delete auf bestimmte Teildatei

    Hallo,

    ich habe eine DB2 Datenbank Datei mit mehreren "Membern"!

    kann man in einem SQLRPGLE, mit einen sql "delete", eine bestimmte Teildatei löschen/clearn?

    vielleicht auch mit einem vorherigen "OvrDbf", etc. ?????

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Nach einem OVRDBF oder in SQL mit CREATE ALIAS kannst du mit SELECT, DELETE, UPDATE auf die Records einer bestimmten Teildatei zugreifen.
    Um die Teildatei zu löschen würde ich den befehl RMVM verwenden.

    lg Andreas

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    309
    a.) die Datei wurde aber nicht mit SQL erstellt, sondern ist eine DB2 (PF)

    b.) ich möchte nicht die komplette Datenbank, sondern nur den entsprechenden
    Inhalt der Teildatei löschen

  4. #4
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Geht auch mit:
    CLRPFM FILE(myLib/myFile) MBR(myMbr)
    kf

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von muadeep Beitrag anzeigen
    a.) die Datei wurde aber nicht mit SQL erstellt, sondern ist eine DB2 (PF)

    b.) ich möchte nicht die komplette Datenbank, sondern nur den entsprechenden
    Inhalt der Teildatei löschen
    @a) das ist egal

    @b) Mit Datenbank meinst du wohl Teildatei.
    Wenn du nur bestimmte Sätze löschen willst (also mit WHERE ...) kannst du das mit ein CREATE ALIAS machen.
    Wenn du den gesamten Inhalt löschen willst, ist das CLRPFM am einfachsten.

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    309
    bei einem CLRPFM habe ich aber das Problem, das es sein kann, das zum Zeitpunkt des löschens der entspr. "Teildatei" (=member), diese von einem User noch gesperrt sein kann !!!

    => hier es es mir dann nicht möglich diese Teildatei zu löschen!

    bei einem "SQL-delete" habe ich das Problem nicht!

    => hier kann ich auch den gesamten Inhalt der entspr. Teildatei löschen, wärend ein User diese noch im "Zugriff" hat!

  7. #7
    Registriert seit
    May 2002
    Beiträge
    1.121
    Moin,

    so wie du schon gesagt hast .. eben mit OVRDBF

    PHP-Code:
    h dftactgrp(*nobnddir('QC2LE')  Option( *NoDebugIO )                  
    h datfmt(*dmy.) timfmt(*hms:) datedit(*dmy.) decedit('0,'debug(*yes)  
                                                                            
    d True            c                   *On                               
    d False           c                   
    *Off                              
                                                                            
    d
    Prozedurn-Defextern für C-Api "system"                             
    d System          pr            10i 0 extproc('system')                 
    d                                 *   value options(*string)            
    d                                                                       
    d                                                                       
    d Befehl          s            200    Inz
    ('ovrdbf MyFile MyLib/MyFile -
    d                                     &Name ovrscope(*JOb)' 
    )           
    d                                                                       
    d Teildatei       s             10                                      
                                                                            
    c     
    *Entry        PList                                               
    c                   Parm                    Teildatei                   
    c                                                                       
    c                   
    Eval      Befehl    =  %Replace(%Trim(Teildatei)      :
    c                                                   Befehl                :
    c                                                   %Scan('&Name':Befehl) :
    c                                                   5                     )
    c                                                                          
    c                   CallP     System
    Befehl )                             
    c                                                                          
    c
    /exec sql                                                                 
    c
    set option commit = *none                                               
    c
    /end-exec                                                                 
    c
    /exec sql                                                                 
    c
    Delete  from  MyFile                                                    
    c
    /end-exec                                                                 
    c                                                                          
    c                   CallP     System
    'dltovr Myfile lvl(*job)' )          
    c                                                                          
    c                   
    Eval      *InLr  True 
    Gruß Ronald

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    309
    a.) genau das funktioniert aber nicht!
    (vielleicht mach ich ja auch was falsch)

    PHP-Code:
    Cmd    'OVRDBF FILE(OUTPUT) ' + %trim('TOFILE(xxx/TEST)~') +
             %
    trim('MBR(XXMSG)') + %trim('~OVRSCOPE(*JOB)');             
    Cmd    = %xlate('~' ' ' Cmd);                                     
    CmdLen = %len(%trim(Cmd));                                            
    QCMDEXC(Cmd:CmdLen);                                                  
                                                                          
                                           
        
    Exec Sql                                                          
          delete from xxx 
    TEST;                                 
                                                                          
                                               
    Cmd    'DLTOVR OUTPUT LVL(*JOB)';                                   
    CmdLen = %len(%trim(Cmd));                                            
    QCMDEXC(Cmd:CmdLen); 
    b.) und deshalb würd mich ja auch interessieren, ob es nicht noch was anderes gibt?

  9. #9
    Registriert seit
    May 2002
    Beiträge
    1.121
    Versuche es mal mit


    delete from output

    Denn auf die hast du ja dein OVRDBF gemacht !

    Ronald

    Meinen Code hatte ich getestet, und da ging es

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von muadeep Beitrag anzeigen
    a.) genau das funktioniert aber nicht!
    (vielleicht mach ich ja auch was falsch)
    Das ist eine ziemlich schwache Aussage!
    Du solltest immer unmittelbar nach einem SQL-Befehl entweder den SQLCODE oder den SQLSTATE prüfen!
    Also was ist der SQLCODE?

    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    309
    SQLCode = 0

    SQLState = 01504


    Anmerkung: das löschen funktioniert schon, nur leider werden immer die Sätze der "ersten" Teildatei gelöscht !!!!!

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    309
    @malzusrex

    danke, das war's !!!!

    => manchmal kann die Welt so einfach sein! ;-)

    thx

Similar Threads

  1. embedded sql - Delete über mehrere Dateien
    By VAHLE in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 17-05-08, 00:00
  2. Hilfe .. SQL .. DELETE
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 02-12-06, 19:45
  3. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58
  4. Teildatei mit SQL anzeigen
    By Rico in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-07-06, 16:25
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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