[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.877
    Scotts Beispiele aus dem Link beschränken sich da auf 1 Satz per Values, was einem "select blabla into .... from ..." entspricht.
    Wenn ein SET-Statement in Verbindung mit einem SELECT-Statement ausgeführt wird, muss genau eine Zeile zurückkommen. Das war die Ausgangssituation!

    Wenn man das Ganze dynamisch machen möchte bzw. muss (weil die Tabelle oder Bibliothek flexibel gehalten werden müssen), kann man entweder
    • ein VALUES ... INTO Statement dynamisch zusammensetzen und dann mit PREPARE und EXECUTE ausführen, wie es AG1965_2 gezeigt hat oder
    • Verwendet einen Cursor, d.h. man bildet das dynamische SELECT-Statement, konvertiert dieses in ein ausführbares SELECT-Statement (PREPARE). Das konvertierte SELECT-Statement wird dann in das DECLARE-Statement eingebunden und danach folgt der übliche Verlauf, d.h. der Cursor muss geöffnet werden (OPEN), der einzelne/erste Datensatz gelesen werden (FETCH) und dann muss der Cursor wieder geschlossen werden (CLOSE).


    Weder SET noch SELECT ... INTO können in Verbindung mit dynamischem verwendet werden.

    Die Frage ist nur, warum sollte man an dieser Stelle 5 SQL-Statements ausführen, wenn man stattdessen mit 2 Statements auskommen kann?
    Nein, ich habe mich nicht verzählt, das SQL-Statement kann auch direkt im PREPARE zusammengesetzt werden!

    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

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das ist einfach zu beantworten:
    values into ist kein SQL Standard, zudem ist die standard Version mit cursor im Fehlerfall einfacher zu behandeln - sprich defensiver. Das ist Dir aber vermutlich egal, Du empfiehlst ja auch naming *sys, commit(*none) und Datenschrank Verarbeitung nach LIBL - ich empfehle halt was anderes, lass doch jeden selbst entscheiden.

    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/

  3. #3
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Wenn ein SET-Statement in Verbindung mit einem SELECT-Statement ausgeführt wird, muss genau eine Zeile zurückkommen. Das war die Ausgangssituation!

    Wenn man das Ganze dynamisch machen möchte bzw. muss (weil die Tabelle oder Bibliothek flexibel gehalten werden müssen), kann man entweder
    • ein VALUES ... INTO Statement dynamisch zusammensetzen und dann mit PREPARE und EXECUTE ausführen, wie es AG1965_2 gezeigt hat oder
    • Verwendet einen Cursor, d.h. man bildet das dynamische SELECT-Statement, konvertiert dieses in ein ausführbares SELECT-Statement (PREPARE). Das konvertierte SELECT-Statement wird dann in das DECLARE-Statement eingebunden und danach folgt der übliche Verlauf, d.h. der Cursor muss geöffnet werden (OPEN), der einzelne/erste Datensatz gelesen werden (FETCH) und dann muss der Cursor wieder geschlossen werden (CLOSE).


    Weder SET noch SELECT ... INTO können in Verbindung mit dynamischem verwendet werden.

    Die Frage ist nur, warum sollte man an dieser Stelle 5 SQL-Statements ausführen, wenn man stattdessen mit 2 Statements auskommen kann?
    Nein, ich habe mich nicht verzählt, das SQL-Statement kann auch direkt im PREPARE zusammengesetzt werden!

    Birgitta
    Hallo,

    hätte eine Frage dazu:
    Ich bekomme bei folgenden Statement SqlCde=-305 SqlStt=22002(Anzeigervariable erforderlich) zurück.
    In der Datenbank gibt es keinen Satz dazu.


    VALUES(SELECT P_NAME FROM PERSONP
    WHERE P_PENR = 58392 ) INTO ?

    Wie müsste mein Statement aussehen das ich den Fehler abfange?

    Danke
    Tarki

Similar Threads

  1. FUJIFILM Imaging Germany, GEWA music und die Igepa group setzen auf AS400 Software
    By Rhenania Computer in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 31-08-16, 15:38
  2. security level auf 40 setzen
    By dibe in forum IBM i Hauptforum
    Antworten: 19
    Letzter Beitrag: 21-12-15, 22:48
  3. Cursorposition setzen
    By thluetjen in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 31-01-08, 10:21
  4. Variable
    By Henrik Motzkus in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-03-02, 09:13
  5. High Tech-Unternehmen setzen weiter auf i2
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 05-07-01, 09:55

Berechtigungen

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