[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2003
    Beiträge
    5

    Unhappy RUNSQLSTM falsch aber Interaktiv OK

    Hallo,

    ich habe über strsql folgende Anweisung eingegeben, die tadellos funktioniert:

    insert into Testbib/lagpf001

    Select FIYE73, year(date(bsdt73+693594)), month(date(bsdt73+693594)), bety73, itnr73 from xivpf073

    where (digits(fiye73) !! digits(bsdt73) !! bety73)=(select max((digits(fiye73) !! digits(bsdt73) !! bety73)) from xivpf073)

    packe ich das ganze in ein Source-Member und lasse es mit RUNSQLSTM laufen gibts Probleme. Angemeckert werden die beiden Ausrufenzeichen, die ich zum Verbinden zweier oder mehrerer Felder verwende.

    Hat jemand eine Idee warum das im Interaktiven funktioniert und mit runsqlstm nicht? Wie müßte der Befehl denn dann aussehen?

    Gruß
    Bernd

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869

    Post

    Hallo Bernd,

    mit !! oder || gibt es Probleme, wenn diese im RUNSQLSTM oder Embedded SQL verwendet werden.

    Benutze stattdessen die SQL Scalar Function CONCAT(), dann klappt's.

    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 2003
    Beiträge
    5

    Talking

    Hallo Brigitta,
    vielen Dank für den Tip. Hat super funktioniert. Ist halt nur etwas mehr Tipparbeit und nicht so übersichtlich. Vielleicht bessert die IBM an dieser Stelle noch nach :-))
    Gruß Bernd

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    340

    Post

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
    Vielleicht bessert die IBM an dieser Stelle noch nach :-))
    [/quote]

    das ist wahrscheinlich nicht nötig. Ich benutze immer &#0124;&#0124; auch in sourcen für RunSqlStm. Wichtig ist, dass die SrcPF eine passende CCSID ( DSPFD ) hat, bzw. dass eine Übersetzung ( DSPJOB ) möglich ist.

    Gruß
    Rolf

  5. #5
    Registriert seit
    Mar 2003
    Beiträge
    5

    Question

    Hallo Rolf,

    die CCSID ist bei uns 273, welche muß ich denn verwenden und wie stelle ich das ein? damit es läuft? So ganz komme ich mit deinem Hinweis nicht klar.

    Gruß Bernd

  6. #6
    Registriert seit
    Jan 2001
    Beiträge
    340

    Post

    Mit den Einstellungen :
    Code:
    SysVal
       QCCSID : 273
    
    Job
       CCSID : 273
    
    Tabelle
       CCSID : 273
    läuft das folgende source member mit runSqlStm
    Code:
    create table qtemp/zumTest            
       ( line char (120)                  
       );                                 
                                          
    insert into qtemp/zumTest             
       select CH_ConfigId &#0124;&#0124; CH_ConfigText
          from CH_Configuration;
    und dieses kleine Progrämmchen ebenfalls
    Code:
         h DftActGrp(*no)
    
         dline             s             60a
    
         c/Exec Sql
         c+   declare c1 cursor for
         c+      select CH_ConfigId &#0124;&#0124; CH_ConfigText
         c+         from CH_Configuration
         c/End-Exec
    
         c/Exec Sql
         c+   open c1
         c/End-Exec
    
         c/Exec Sql
         c+   fetch c1 into :line
         c/End-Exec
    
         c/Exec Sql
         c+   close c1
         c/End-Exec
    
         c                   eval      *inLr = *on
    diese Einstellungen spielen zusammen und müssen passen. Wenn die Eingaben von einem PC aus erfolgen, muß auch die Code page passen, d.h. entweder gleich oder "übersetzbar" sein.

    Gruß
    Rolf

  7. #7
    Registriert seit
    Mar 2003
    Beiträge
    5

    Post

    Hallo Rolf,

    vielen Dank für die Infos. Hmm .. es geht. Toll :-))

    Gruß Bernd

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207

    Post

    Mit dem RPG-Programm sollte man etwas vorsichtiger sein, da das Zeichen "|" ein sog. variantes Zeichen ist und somit der Hex-Code bereits zur Umwandlungszeit feststeht.
    Läuft das Programm später unter einer anderen CCSID als die ursprüngliche CCSID der Quelle, funktioniert das nicht mehr, da ja das |-Zeichen nicht mehr übersetzt wird !

    Datenumsetzungen erfolgen ausschließlich bei Datenzugriffen und nicht bei Programmkonstanten !!!
    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
    Dec 2000
    Beiträge
    138

    Question

    hallo birgitta,

    ich darf mal zitieren:

    &gt;&gt;Benutze stattdessen die SQL Scalar Function CONCAT(), dann klappt's.&lt;&lt;

    wie müßte mein !!-statement denn mit concat() aussehen?:

    blabla
    set sdtxt2 = substring(sdtxt2, 1, 12) !!
    '000000000000' !!
    substring(sdtxt2, 25, 16)
    blablaweiter

    etwa so?:

    set sdtxt2 = concat(substring(sdtxt2, 1, 12),
    '000000000000' , !!
    substring(sdtxt2, 25, 16) )

    ich müßte in die mitte dieses feldes ein paar Nullen einbauen.
    vielen dank im voraus!
    gruß, karin

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.869

    Post

    Hallo Karin,

    ersetze in Deinem SQL-Statement einfach !! durch Concat:

    set sdtxt2 = substring(sdtxt2, 1, 12) concat
    '000000000000' concat
    substring(sdtxt2, 25, 16)

    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

  11. #11
    Registriert seit
    Dec 2000
    Beiträge
    138

    Smile

    hi birgitta,

    1000dank! es funktioniert (natürlich!)... ich glaube, ich hatte vorher concatE geschrieben und bin dann irgendwann verzweifelt...

    gruß, karin

Similar Threads

  1. RUNSQLSTM - Problem
    By muadeep in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 03-09-06, 21:11
  2. %float rundet falsch !!
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 05-05-06, 11:46
  3. Runsqlstm 2. Teil
    By Akku in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 04-07-05, 11:23
  4. Runsqlstm
    By Robi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 03-05-05, 11:46
  5. Systemwert xdayofweek falsch
    By emily in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 30-03-05, 11:05

Berechtigungen

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