[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.754
    NEXT VALUE geht nicht beim Select!

    Die Syntax ist
    insert into myfile
    (seqfld, feld1, feld2, feld3)
    values(next value for myseq, wert1, wert2, wert3)

    Du siehst, ein "Insert ... select ... from ..." funktioniert hier nicht.

    Du musst dann die Tabelle mit einer AutoIncrement-Feld erstellen und dieses Feld beim Insert dann weglassen:

    create mytable (myseq as identity, ...)

    PS:
    Hier noch mal ein genaues Beispiel aus dem Handbuch:

    CREATE TABLE
    EMPLOYEE2 (
    EMPNO INTEGER GENERATED ALWAYS AS IDENTITY,
    ID SMALLINT,
    NAME CHAR(30),
    SALARY DECIMAL(5,2),
    DEPTNO SMALLINT)

    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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Das Problem ist, dass NEXT Value For nicht direkt in Verbindung mit Union-Anweisungen zulässig ist.

    Das Statement sollte funktionieren, wenn Du die Union-Anweisung als Sub-Select definierst.

    Etwa so:
    PHP-Code:
    insert into LastTable (DNrDlabelDName)
          (
    Select Next Value for Seq_Zaehlerx.*
             
    From (Select FldLabelFldName from MyTable
                     Union All 
                   Select XYZLabel
    XYZName from NextTable
    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

  3. #3
    Registriert seit
    Jun 2005
    Beiträge
    9
    Danke für die Tipps! Ich habe es nun wie in Birgittas Beispiel versucht.

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Das Statement sollte funktionieren, wenn Du die Union-Anweisung als Sub-Select definierst.

    Etwa so:
    PHP-Code:
    insert into LastTable (DNrDlabelDName)
          (
    Select Next Value for Seq_Zaehlerx.*
             
    From (Select FldLabelFldName from MyTable
                     Union All 
                   Select XYZLabel
    XYZName from NextTable
    Birgitta
    Das einzige Problem, das ich noch hatte, war, dass die Sequenz bei jedem Programmaufruf wieder bei 1 anfangen soll.

    Das habe ich nun so gelöst:
    PHP-Code:
    exec sql drop sequence seq_zaehler;
    exec sql create sequence seq_zaehler start with 1 increment by 1 no maxvalue order
    Es funktioniert, aber ist es auch eine gute Idee?

    Nochmals vielen Dank an euch!
    Markus

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.754
    Einfacher gehts mit

    ALTER SEQUENCE
    MySequence RESTART

    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. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 11:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 15:53
  3. Auto increment; wie Startwert und Schrittweite definieren?
    By deni87991 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 14-08-06, 13:05
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43
  5. Identity Colum / Auto increment selbst erzeugen?
    By scoobydoo in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-11-05, 11:40

Berechtigungen

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