[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2009
    Beiträge
    208

    set :Z = geht nicht, ohne das set sehrwohl

    Gleich noch eine SQL Frage (danke)

    Das liefert eine 1 zurück (interaktiv, strsql)
    Code:
    with a as (select xxkey1, xxkey2, xxkey3                          
                        from xxfile where xxma = 14073              
                        and xxan = 0 and xxstat = 2)                
              select count(*) from(                                   
                              select yypool from yyfile               
                               where yyma=14073 AND yyAN=0        
                                     AND (yykey1, yykey2, yykey3) in( 
                                 select xxkey1, xxkey2, xxkey3 from a)
                                 and       yymk*1000+yymst <> 999997  
                                  group by yypool) as v
    ich brauche das als

    Code:
    C/exec-sql
    C+ set :Z = (with a as (select xxkey1, xxkey2, xxkey3                          
    C+                    from xxfile where xxma = 14073              
    C+                    and xxan = 0 and xxstat = 2)                
    C+          select count(*) from(                                   
    C+                          select yypool from yyfile               
    C+                           where yyma=14073 AND yyAN=0        
    C+                                 AND (yykey1, yykey2, yykey3) in( 
    C+                             select xxkey1, xxkey2, xxkey3 from a)
    C+                             and       yymk*1000+yymst <> 999997  
    C+                              group by yypool) as v   )
    C/end exec
    Das bricht zur Laufzeit ab und erzeugt sogar einen dump

    Was ist falsch?

    Danke

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ggf. wird ein Fullselect beim Set nicht unterstützt.
    Eine Set-Anweisung entspricht einem skalaren Subselect und da ist With auch nicht erlaubt.

    Aber dies geht wohl ebenso:

    Code:
    C/exec-sql
    C+ with a as (select xxkey1, xxkey2, xxkey3                          
    C+                    from xxfile where xxma = 14073              
    C+                    and xxan = 0 and xxstat = 2)                
    C+          select count(*) into :Z 
    c+                     from(                                   
    C+                          select yypool from yyfile               
    C+                           where yyma=14073 AND yyAN=0        
    C+                                 AND (yykey1, yykey2, yykey3) in( 
    C+                             select xxkey1, xxkey2, xxkey3 from a)
    C+                             and       yymk*1000+yymst <> 999997  
    C+                              group by yypool) as v  
    C/end exec
    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
    Nov 2009
    Beiträge
    208
    Danke, so hat es funktioniert!

    Dietlinde Beck

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Bedenke dabei nur, dass der Count u.U. auch NULL zurückgeben kann wenn keine Daten gefunden werden. In diesem Fall wäre ein NULL-Anzeiger schon hilfreich, denn ein negativer SQLCODE kann auch andere Gründe haben. Aber SQLCODE und/oder NULL-Anzeiger abzufragen macht da schon Sinn.
    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... count sollte schon was zurück geben, bei leerem ResultSet dann 0.

    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/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nein, meine Erfahrung besagt, dass Count auch NULL zurückgibt, sonst hätte ich es nicht erwähnt.
    Mag sein, dass dies ein IBM-SQL-Fehler ist, aber das hat mich dann nie interessiert.
    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
    Aug 2003
    Beiträge
    1.508
    Das würde mich jetzt auch sehr wundern wenn ein count NULL zurück liefert.
    Auch in der Doku steht auch extra "The result cannot be null".

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Dann werde ich den SQL nochmal raussuchen, vielleicht ist der Grund dann erkennbar.
    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. Automatische Beantwortung geht nicht
    By alex61 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 08-03-17, 10:50
  2. qsh find -prune geht nicht
    By Robi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 03-02-16, 10:16
  3. 0 vorschub geht nicht
    By Robi in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 23-09-14, 08:30
  4. QSH und HTTP - geht nicht
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 01-09-14, 22:48
  5. F9 Taste geht nicht mehr
    By Uwe Kohlberg in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 23-01-07, 11:59

Berechtigungen

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