[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2012
    Beiträge
    39

    Red face Exec SQL INSERT INTO und Array?

    Schönen guten Abend Zusammen,

    ich habe ein Problem wo Hilfe gebrauchen kann, bitte beachtet das ich mich im ersten Ausbildungsjahr befinde und nicht alles perfekt ist.

    Bei der Umwandlung bekomme ich die Fehlermeldung:

    SQL5011 30 57 Position 49 Bereich der Host-Struktur FNAME nicht
    definiert oder nicht verwendbar.



    Code:
    D Main            PR                  Extpgm('CHKLFSSRC')                   
    D Pbibo                         10A                                         
    D Pfile                         10A                                         
    D Pdate                          6  0                                       
    D Main            PI                                                        
    D Pbibo                         10A                                         
    D Pfile                         10A                                         
    D Pdate                          6  0                                       
    /* ************************************************************************ 
    d system          pr            10I 0 EXTPROC('system')                     
    d                                 *   value OPTIONS(*STRING)                
    d cpfmsg          s              7A   IMPORT('_EXCP_MSGID')                 
    /* ************************************************************************ 
    D FName                        100A   Dim(512)                              
    /* ***************Programm Vaiablen**************************************** 
    D FSRC                          20A                                         
    D Name                          10A                                         
    D Count           S              6  0                                       
    d   i                            4S 0 Inz                                   
    
    /* ************************************************************************
    C/exec sql                                                                 
    C+     set option DatFmt = *iso, Commit = *none, CloSqlCsr = *endmod       
    C/end-exec                                                                 
     /FREE                                                                     
        FSRC = Pbibo + '/' + Pfile;                                            
        System('CRTPF FILE(QTEMP/LISTOUT) RCDLEN(80)');                        
        System('DSPFD FILE(' + FSRC + ') TYPE(*MBRLIST) +                      
                      OUTPUT(*OUTFILE) OUTFILE(QTEMP/LISTIN');                 
                                                                               
        EXEC SQL Declare MyCs Cursor FOR                                       
           SELECT MLNAME FROM                                                  
            QTEMP/LISTIN                                                       
           where DEC(MLCHGD) <= :Pdate;                                        
                                                                               
        Exec SQL Open MyCs;                                                    
        Exec SQL FETCH MyCs FOR 512 ROWS INTO :FName;                          
        Count = SQLER3;                                                        
        Exec SQL Close MyCs;                                                   
    
        FOR i=1 by 1 to 512;                                   
          clear Name;                                          
          Name = FName(i);                                     
          Exec SQL INSERT INTO QTEMP/LIST (LIST) VALUES(:Name);
        EndFor;                                                
                                                               
      *InLr=*On;                                               
     /END-FREE

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo,

    das Feld FName ist in deinem Code
    vieleicht mehrfach definiert.

    Deshalb weiß der Compiler nicht was gültig ist.

    gruß
    Michael

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    SQL kann keine Feldgruppen/Arrays verarbeiten, sondern nur Array-Datenstrukturen.
    Du musst Dein Ausgabe-Feld wie folgt definieren:

    Code:
    D MyOutDS       DS                      Dim(512) Qualified
    D   FName                          100A
    Die einzelnen Unterfelder/Elemente musst Du dann wie folgt ansprechen:

    Code:
     /Free
         MyOutDS(Index).FName = '123';
         If MyOutDS(Index).FName = 'AAAAA';
    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
    Jan 2001
    Beiträge
    850
    Oh, sorry

    ich hatte nur die Meldung beachtet.

    Birgitta hat natürlich recht

  5. #5
    Registriert seit
    Jun 2012
    Beiträge
    39

    Smile

    Danke für den Tipp habe ich nun umgesetzt aber der Fehler ist geblieben, hier aktuelle Code: D Main PR Extpgm('CHKLFSSRC') D P - Pastebin.com

    Und die Fehlermeldung:

    SQL0312 30 65 Position 59 Variable OUTPUT nicht definiert oder nicht
    verwendbar.

    Vielleicht noch als Info MLNAME ist ein Char Feld mit der Länge 10.

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... so wie Du es deklariert hast, ist ouutput Teil der DS und damit des arrays, muss also qualifiziert und mit Index verwendet werden.

    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
    Jun 2012
    Beiträge
    39
    Super danke hab es einfach übersehen, die kleinen Fehler sind wirklich die schlimmsten.

Similar Threads

  1. exec sql drop variable
    By Robi in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 17-01-13, 15:31
  2. DDS: VARLEN, SQL TRIM -> trotzdem große Datei
    By schatte in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 02-02-12, 12:54
  3. SQL Insert in schleife
    By Robi in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 16-03-09, 10:32
  4. SQL: Insert bei NULL
    By woki in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 31-10-06, 10:21
  5. Einfache Abfrage in COBOL/400 mit EXEC SQL
    By AS400-Anfänger in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-06-06, 13:18

Berechtigungen

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