[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    833

    Nachricht: [SQL0901] SQL-Systemfehler

    Sowas kommt natürlich immer zum ungünstigsten Zeitpunkt.

    Folgendes Problem:

    Ein View kann nicht erstellt werden.

    Nachricht: [SQL0901] SQL-Systemfehler. Ursache *. . . . : *Ein SQL-Systemfehler ist aufgetreten. Die aktuelle SQL-Anweisung kann nicht erfolgreich beendet werden. Der Fehler verhindert nicht die Verarbeitung anderer SQL-Anweisungen. Vorherige Nachrichten können darauf hinweisen, dass ein Problem mit der SQL-Anweisung vorliegt und dass SQL den Fehler nicht korrekt diagnostiziert hat. Die vorherige Nachrichten-ID lautete CPF4204. Interner Fehler der Art 4265 aufgetreten. Erfolgt eine Vorkompilierung, wird die Verarbeitung nicht über diese Anweisung hinaus fortgesetzt. Fehlerbeseitigung: *Anhand der vorherigen Nachrichten bestimmen, ob ein Problem mit der SQL-Anweisung vorliegt. Um die Nachrichten anzuzeigen, bei interaktiver Ausführung den Befehl DSPJOBLOG verwenden, oder den Befehl WRKJOB verwenden, um die Ausgabe einer Vorkompilierung anzuzeigen. Ein Anwendungsprogramm, das diesen Rückkehrcode erhält, versucht möglicherweise, weitere SQL-Anweisungen auszuführen. Die Fehler korrigieren und die Anforderung wiederholen.


    Die Source ist seit der letzten Erstellung nicht geändert worden. Und der View soll
    im Zuge einer Aktivierung mit erstellt werden.

    Die CPF Meldung sagt folgendes

    PHP-Code:
    Nachrichten-ID . . . . . . . :   CPF4204                                    
    Nachrichtendatei 
    . . . . . . :   QCPFMSG                                    
      Bibliothek 
    . . . . . . . . :     QSYS                                     
                                                                                
    Nachricht 
    . . . :   Interner Fehler im Abfrageprozessor.                    
    Ursache  . . . . :  Im Abfrageprozessorprogramm ist ein Systemfehler        
      aufgetreten
    . Die Schablonennummer für die Abfragedefinition ist &1.       
    Fehlerbeseitigung
    :  Nachricht der unteren Ebene beachtenFehler beheben und
      Anforderung wiederholen
    Tritt das Problem erneut aufProblem melden     
      
    (Befehl ANZPRB). 
    Wir haben V7R3 und PTF TL20310

    Kennt vllt. jemand das Problem ?

    Schönes WE
    Gruß
    Michael

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Bei SQL0901 hilft nur ein Ticket bei der IBM.
    Wir hatten in der früheren Firma auf einer Maschine das Problem, dass (einfache) Views nicht erstellt werden konnten, aber da die Maschine nicht unter Support war, haben wir dafür auch nie eine Lösung bekommen.

    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... wie sieht denn das Statement aus? Vielleicht gibt es ja einen Würgdrumherum mit einer anderen Formulierung.

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

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    833
    Hi ,
    nur mal so zur Info. Eigentlich ein ganz simpler View

    PHP-Code:
    CREATE or replace VIEW ORDTXT02V   as

     
    select hdr.nlg                 as Firma  ,
            
    hdr.auftragsnr          as auftragsnr,
            
    hdr.kundennr            as kundennr,
            
    part.KDNAM1             as Kundenname,
            
    hdr.bestellnr           as bestellnr,
            
    hdr.datum_auftrag       as datum_auftrag,
            
    hdr.allamount           as allamount,
            
    pos.AUFTAGSPOS          as auftragsposition ,
            
    pos.artikelkz           as artikelkz,
            
    pos.artikelnr           as artikelnr,
            
    pos.bezeichnung1        as bezeichnung1,
            
    pos.bestellmenge        as bestellmenge,
            
    pos.waehrung            as waehrung,
            case 
    when pos.waehrung 'EUR' then  bruttopreiseur
                 when pos
    .waehrung <> 'EUR' then bruttopreis    end as Bruttopreis,
            case 
    when pos.waehrung 'EUR' then  poswerteur
                 when pos
    .waehrung <> 'EUR' then poswert          end as poswert,
          ( 
    select count(*) from ordtxt01V where hdr.nlg        =  FIRMA
                             
    and hdr.auftragsnr =  AUFTRAGNR
                             
    and hdr.kundennr   =  KUNDENNR
                             
    and pos.artikelkz  =  ARTIKELKZ
                             
    and pos.artikelnr  =  ARTIKELNUMMER
                             
    and pos.AUFTAGSPOS =  AUFTRAGPOSITION) as AnzInfoText,

          ( 
    select BENUTZER from ordtxt01V where hdr.nlg        =  FIRMA
                                 
    and hdr.auftragsnr =  AUFTRAGNR
                                 
    and hdr.kundennr   =  KUNDENNR
                                 
    and pos.artikelkz  =  ARTIKELKZ
                                 
    and pos.artikelnr  =  ARTIKELNUMMER
                                 
    and pos.AUFTAGSPOS =  AUFTRAGPOSITION
                                 order by DATEINFOTEXT desc
                                 fetch first row only     
    ) as AnzInfoUser ,

          ( 
    select max(DATEINFOTEXTfrom ordtxt01V where hdr.nlg  =  FIRMA
                                            
    and hdr.auftragsnr =  AUFTRAGNR
                                            
    and hdr.kundennr   =  KUNDENNR
                                            
    and pos.artikelkz  =  ARTIKELKZ
                                            
    and pos.artikelnr  =  ARTIKELNUMMER
                                            
    and pos.AUFTAGSPOS =  AUFTRAGPOSITION
                                      fetch first row only  
    )  as AnzLastTextDate

     from wbordoh02v hdr

     join wbordop01v pos
     on hdr
    .AUFTRAGSNR =  pos.AUFTRAGSNR

     join partner 
    as part
     on  part
    .adrkz 'K'
     
    and hdr.kundennr part.kdnr



    und wir haben durchaus noch viel kompliziertere Views.
    Und diese kann das System erstellen.

  5. #5
    Registriert seit
    Jan 2001
    Beiträge
    833
    Nur falls es jemand interessiert



    CPF9898 Abbruch 40 17.04.21 13:18:06,814388 QQQSRVI1 QSYS *STMT QQQVFMT QSYS *STMT
    Ausgangsmodul . . . . . . . : QQQFNCHK
    Ausgangsprozedur . . . . . : QQFUNCTIONCHECK
    Anweisung . . . . . . . . . : 1358
    Zielmodul . . . . . . . . . : QQQVFMT
    Zielprozedur . . . . . . . : QQQVFMT
    Anweisung . . . . . . . . . : 32999
    Nachricht . . . : Update_SS_UDF_Entryarameter count mismatch.
    Ursache . . . . : Diese Nachricht wird von Anwendungsprogrammen als
    allgemeine Abbruchnachricht verwendet.
    CPF4204 Diagnose 50 17.04.21 13:18:06,965765 QQQQUERY QSYS *STMT QSQCRTV QSYS *STMT
    Ausgangsmodul . . . . . . . : QQQQUERY
    Ausgangsprozedur . . . . . : QQQQUERY
    Anweisung . . . . . . . . . : 35008
    Zielmodul . . . . . . . . . : QSQCRTV
    Zielprozedur . . . . . . . : QSQCRTV
    Anweisung . . . . . . . . . : 11854
    Nachricht . . . : Interner Fehler im Abfrageprozessor.
    Ursache . . . . : Im Abfrageprozessorprogramm ist ein Systemfehler
    aufgetreten. Die Schablonennummer für die Abfragedefinition ist 1.
    Fehlerbeseitigung: Nachricht der unteren Ebene beachten. Fehler beheben und
    Anforderung wiederholen. Tritt das Problem erneut auf, Problem melden
    (Befehl ANZPRB).
    SQL0901 Diagnose 50 17.04.21 13:18:06,971860 QSQCRTV QSYS *STMT QSQCRTV QSYS *STMT
    Ausgangsmodul . . . . . . . : QSQCRTV
    Ausgangsprozedur . . . . . : CLEANUP
    Anweisung . . . . . . . . . : 22849
    Zielmodul . . . . . . . . . : QSQCRTV
    Zielprozedur . . . . . . . : CLEANUP
    Anweisung . . . . . . . . . : 22849
    Nachricht . . . : SQL-Systemfehler.
    Ursache . . . . : Ein SQL-Systemfehler ist aufgetreten. Die aktuelle
    SQL-Anweisung kann nicht erfolgreich beendet werden. Der Fehler verhindert

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... was ich da so vorab probieren würde:
    - läuft das Statement als select durch?
    - laufen die einzel Selects durch?
    - lässt sich die join View ohne die where Klauseln etc. erstellen
    - lassen sich die Teil joins erstellen
    - lässt sich das komplett neu erstellen (inklusive aller zugrunde liegenden Tabellen)?

    und dann weitersehen.

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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Man könnte auch die skalaren Subselects als "cross joint lateral (...)" probieren.
    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Man könnte auch die skalaren Subselects als "cross joint lateral (...)" probieren.
    ... das scheint mir eher das Problem zu sein, wenn die allwissende Müllhalde Google nach "Update_SS_UDF_Entry Parameter count mismatch" frage.

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

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Man könnte auch die skalaren Subselects als "cross joint lateral (...)" probieren.
    Dazu braucht man kein LATERAL! Das geht mit ganz normalen Joins und Sub-Selects (oder besser Common Table Expressions).

    Das Problem hier ist jedoch, dass die View bereits erstellt wurde und zwar fehlerfrei (und vermutlich auch korrekt arbeitet) ... und jetzt tritt plötzlich ein System-Fehler auf, der vermutlich durch irgendeine Änderung/PTF verursacht wurde und den es gilt (von der IBM) zu beheben.
    Birgitta Hauser

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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dann versuch mal einen
    join (select ... fetch first 1 rows only)
    Der liefert genau den 1. Satz und keine weiteren mehr.

    Im Gegensatz zu
    lateral (select ... fetch first 1 rows only)
    Dieses wird je Zeile ausgeführt und bringt das gewünschte Ergebnis.
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Warum willst Du denn überhaupt einen SELECT ... FETCH FIRST ROW?
    Warum verdichtest Du die Daten nicht entsprechend mit einem Key in einer CTE (oder auch in einem SELECT in der FROM-Anweisung) und joinst das Ergebnis?
    Mit dieser Technik, kann man in der Beispiel-View auch mindestens einen SELECT sparen. Bei dem Benutzer bin ich mir nicht ganz sicher, ob der auch in der gleichen CTE abgehandelt werden kann, dazu müsste ich die Dateien und Daten kennen.
    ... so auf die Schnelle, könnte das SELECT-Statement in der View wie folgt umgeschrieben werden (und zwar OHNE LATERAL).

    Code:
    With x as (select Firma, AuftragNr, KundenNr, ArtikelKZ, ArtikelNr, AuftragsPosition, 
                      count(*)          AnzInfoText,
                      Max(DateInfoText) AnzLastTextDate,
                  from ordtxt01V),
                  
         y  as (Select Firma, AuftragNr, KundenNr, ArtikelKZ, ArtikelNr, AuftragsPosition,
                       Benutzer as AnzInfoUser
                       Row_Number() Over(Partition By Firma, AuftragNr, KundenNr, 
                                                      ArtikelKZ, ArtikelNr, AuftragsPosition
                                         Order By DateInfoText Desc) LfdNr
                                         
    select hdr.nlg                 as Firma  ,
            hdr.auftragsnr          as auftragsnr,
            hdr.kundennr            as kundennr,
            part.KDNAM1             as Kundenname,
            hdr.bestellnr           as bestellnr,
            hdr.datum_auftrag       as datum_auftrag,
            hdr.allamount           as allamount,
            pos.AUFTAGSPOS          as auftragsposition ,
            pos.artikelkz           as artikelkz,
            pos.artikelnr           as artikelnr,
            pos.bezeichnung1        as bezeichnung1,
            pos.bestellmenge        as bestellmenge,
            pos.waehrung            as waehrung,
            case when pos.waehrung = 'EUR' then  bruttopreiseur
                 when pos.waehrung <> 'EUR' then bruttopreis    end as Bruttopreis,
            case when pos.waehrung = 'EUR' then  poswerteur
                 when pos.waehrung <> 'EUR' then poswert          end as poswert,
          AnzInfoText,
          AnzInfoUser,
          AnzLastTextDate
     from wbordoh02v hdr join wbordop01v pos on hdr.AUFTRAGSNR =  pos.AUFTRAGSNR
                         join x              on     hdr.nlg        =  x.FIRMA
                                                and hdr.auftragsnr =  x.AUFTRAGNR
                                                and hdr.kundennr   =  x.KUNDENNR
                                                and pos.artikelkz  =  x.ARTIKELKZ
                                                and pos.artikelnr  =  x.ARTIKELNUMMER
                                                and pos.AUFTAGSPOS =  x.AUFTRAGPOSITION  
                         join y              on     hdr.nlg        =  y.FIRMA
                                                and hdr.auftragsnr =  y.AUFTRAGNR
                                                and hdr.kundennr   =  y.KUNDENNR
                                                and pos.artikelkz  =  y.ARTIKELKZ
                                                and pos.artikelnr  =  y.ARTIKELNUMMER
                                                and pos.AUFTAGSPOS =  y.AUFTRAGPOSITION                                                         
                                                and y.LfdNr        = 1;
    Birgitta
    Birgitta Hauser

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

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Es geht aber z.B. darum, die letzte Information eines Joins zu bekommen, dessen Key ich so nicht kenne:

    select * from table1 a
    left join (select wert from table2 b where a.key=b.key order by b.key, b.datum desc fetch first 1 rows only)
    Dies funktioniert so nur nicht.

    Ein häufiger Vorgang, den ich früher per

    select a.*, c.value from table1 a
    left join (Select key, max(Datum) Datum from table2 group by key) on a.key = b.key
    left join table2 c on b.key=c.key and b.datum = c.datum

    Der allerdings relativ langsam ist.
    Seit der Möglichkeit dies per lateral zu verwenden, kann ich nun das selbe einfach erreichen:

    select * from table1 a
    cross join lateral
    (select value from table2 b where a.key=b.key
    order by key, datum desc
    fetch first 1 rows only) x

    Und dies ist um Faktoren schneller. Zumal ich so auch skalare subselects, die u.U. auf dieselbe Tabelle verweisen, zu einem join lateral zusammen fassen kann.
    Wenn du dir die obige View ansiehst, so werden 3 skalare subselects auf eine Tabelle durchgeführt.
    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

Similar Threads

  1. NET USE Systemfehler 64 Windows 10 Bitdefender
    By TheDevil in forum IBM i Hauptforum
    Antworten: 16
    Letzter Beitrag: 07-11-19, 11:52
  2. System-Nachricht mit Variablen
    By pk50226 in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 23-08-17, 11:12
  3. Nachricht unterdrücken
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 22-03-16, 07:40
  4. CL- Programm- Nachricht beantworten
    By Twinkie in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 14-12-15, 11:23
  5. Nachricht ins BRMS-Log senden?
    By Chris.jan in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 26-07-15, 05:13

Berechtigungen

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