[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2016
    Beiträge
    4

    RPG SQL Insert VALUES(Datenstruktur)

    Hallo

    Info: Betriebssystem V7R2.

    in einem RPG (SQLRPG) Programm soll ein SQL INSERT in eine Datenstruktur erfolgen.
    Die DS enthält ein NULL-Feld

    *--> Datenstrucktur der GVKP
    D ds_gvkp E DS EXTNAME(gvkp)

    D AnzeigerV S 5I 0 DIM(22)

    D TrCodNull S 5I 0
    D NULL S 5I 0 Inz(-1)


    Der Insert in die DS funktioniert leider nicht.
    EXEC SQL
    INSERT INTO GVKP VALUES(:ds_gvkp :AnzeigerV);

    Der INSERT mittels einzelner Values funktioniert.
    EXEC SQL
    INSERT INTO GVKP VALUES(:gvseqid,
    ....
    NULL,
    :gvdatum)

    Funktioniert es grundsätzlich nicht bei einem NULL-Feld in der DS, oder mache ich da etwas verkehrt oder fehlt irgendein Parameter.

    Danke voraus
    viele Grüße
    Jürgen

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    So genau gibt das das Handbuch nicht her, aber um konform mit MultipleRow-Insert zu bleiben, ist ggf. das NULL-Array in einer DS anzugeben und die DS als NULL-Anzeiger.

    D AnzeigerDS DS
    D AnzeigerV 5I 0 dim(22)

    INSERT INTO GVKP VALUES(: ds_gvkp : AnzeigerDS);

    Bei mehreren Zeilen wird nämlich auf beiden DS nur die Dimension gesetzt.
    Empfehlenswert ist dieses Vorgehen nicht, da man ja die NULL-Anzeiger abzählen muss.
    Die Einzelbenennung ist auf jeden Fall sicherer.
    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
    Oct 2016
    Beiträge
    4
    Hallo
    vielen Dank für die schnelle Antwort.

    Wenn das 22. Feld NULL enthalten soll, was muss in AnzeigerV(22) reingeschrieben werden?
    Der Inhalt aus der Variable NULL (wie oben definiert mit -1) ?

    Viele Grüße
    Jürgen

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das ist korrket:
    0 = Wert ist nicht NULL
    -1 = Wert ist NULL
    Zu beachten ist, dass du alle NULL-Anzeiger setzen musst.
    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
    Oct 2016
    Beiträge
    4
    Hallo an *Alle

    INFO zur Lösung:

    INSERT INTO GVKP VALUES(: ds_gvkp : AnzeigerDS);
    die Anweisung hat leider nicht funktioniert.

    Funktioniert hat es dann mit dieser Definition
    *--> Anzeiger Variable (indicator) zur GVKP
    D AnzeigerV S 5I 0 DIM(22) INZ(*ZEROS)

    *--> Null Value
    D NULL S 5I 0 Inz(-1)

    Dann das NULL-Feld (Nummer 21) mit NULL definierien.
    AnzeigerV(21) = NULL;

    EXEC SQL
    INSERT INTO GVKP VALUES(:ds_gvkp :AnzeigerV);


    viele Grüße
    Jürgen

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun, ich bin halt nicht davon ausgegangen, dass du die Nullanzeiger nicht initialisierst!
    Manchmal ist das Fehlen von Code schwer ersichtlich.
    Ich habe mir z.B. angewöhnt, jede DS und Single-Variable mit INZ zu initialisieren.
    INZ reicht im Übrigen, da der typspezifische Default verwendet wird.
    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
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von ASFOURI Beitrag anzeigen
    Hallo an *Alle

    INFO zur Lösung:

    INSERT INTO GVKP VALUES(: ds_gvkp : AnzeigerDS);
    die Anweisung hat leider nicht funktioniert.

    Funktioniert hat es dann mit dieser Definition
    *--> Anzeiger Variable (indicator) zur GVKP
    D AnzeigerV S 5I 0 DIM(22) INZ(*ZEROS)

    *--> Null Value
    D NULL S 5I 0 Inz(-1)

    Dann das NULL-Feld (Nummer 21) mit NULL definierien.
    AnzeigerV(21) = NULL;

    EXEC SQL
    INSERT INTO GVKP VALUES(:ds_gvkp :AnzeigerV);


    viele Grüße
    Jürgen
    ... seltsam, seltsam das INZ sollte eigentlich nur in einer DS erforderlich sein, da diese sonst als char behandelt und mit blank initialisiert wird. (Die reference garantiert das zumindest für static (= global) Felder, scheint aber auch für automatic storage (locale Variablen) ohne INZ auf die Felddefaults, in diesem Fall 0, zu funzen.

    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/

  8. #8
    Registriert seit
    Oct 2016
    Beiträge
    4
    Hallo
    vielen Dank für eure Info und Hilfe.
    "INZ wird nun ein wichtiger Bestandteil zukünftiger Definitionen werden".

    viele Grüße
    Jürgen

Similar Threads

  1. VALUES Check auf Inputfeld ignoriert
    By camouflage in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 18-08-15, 14:10
  2. EXFMT mit Datenstruktur
    By teh in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 18-11-14, 16:08
  3. Antworten: 7
    Letzter Beitrag: 24-04-14, 10:00
  4. Sql und Datenstruktur
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 24-01-14, 16:51
  5. STRDBG und Datenstruktur
    By XMan in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-01-14, 18:51

Berechtigungen

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