[NEWSboard IBMi Forum]

Thema: SQLRPGLE

Hybrid View

  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.121

    SQLRPGLE

    Hallo Gemeinde!

    Ich hätte da mal wieder eine Frage zu einem SQLRPGLE-Programm.

    Im Programm habe ich im Moment mehrmals ein SQL, welches bis auf die letzte WHERE-Bedingung identisch ist.

    Exec SQL
    Select Wert1, Wert2, Wert3,.... into :XDatenSQL
    from Myfile where Feld1 = :XDAT and Feld2 = :WASauchIMMER
    and hier dann der abweichende Teil

    Diese Anweisung kommt dann öfters.
    Jetzt Wollte ich für die Lesbarkeit des Programms das SQL als String definieren
    Anweisung_Alle = 'Select ...'
    und dann
    Anweisung_SQL = %Trim(Anweisung_ALLE) + abweichender Teil
    Danach dann ein
    Exec SQL
    Execute Immediate :Anweisung_SQL;

    Nur so funktioniert es wohl nicht, wie ich es mir gedacht habe.
    Wie müsste es richtig aussehen ??

    Viele Grüße
    Ronald

  2. #2
    Registriert seit
    Apr 2005
    Beiträge
    385
    Code:
     SQLSTM 3064A VARYING
    SQLSTM = 'SELECT FLD1, FLD2, ... FROM MyFILE
    SQLSTM = SQLSTM + 'WHERE BED1 AND BED2..'   
    
    EXEC SQL PREPARE STMT1 FROM :SQLSTM
    EXEC SQL DECLARE C1 CURSOR FOR STMT1
    EXEC SQL OPEN C1 
    EXEC SQL FETCH INTO :VAR
    EXEC SQL CLOSE C1
    So funktioniert es bei mir V6R1 & V7R1 ...

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Läufst du da nicht in die Falle einer SQL-Injection?

  4. #4
    Registriert seit
    May 2002
    Beiträge
    1.121
    OKay,

    ich dachte ich kann mir den PREPARE, DECLARE,... Sparen

    Dann werde ich das mal so machen

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Mit select ... into :xDatenSQL ... nutzt du ja eine Host-Variable (xDatenSQL) innerhalb deiner SQL Anweisung. Das geht nur, wenn du eine "echte" SQL-Anweisung hast (also statisches SQL). Wenn du dynamisches SQL machst, hast du ja erstmal keine echte SQL-Anweisung mehr, sondern einen String, der später interpretiert wird. Da kann er die Hostvariablen dann nicht mehr erkennen. Deshalb ist der Cursor notwendig.

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Pikachu Beitrag anzeigen
    Läufst du da nicht in die Falle einer SQL-Injection?
    ... ein vermeintlich schlauer Spruch, unpassend angebracht!!!
    - solange der Rest des Statements nicht zugänglich ist, passiert da garnichts!!!
    - die üblen Beispiele, die gerne für Injection angebracht werden, funktionieren mit DB2/400 nicht, da der prepare keine 2 Statements durchlässt!!!

    D*B

    PS: gegen Injection ist ein einfaches Kraut gewachsen, filtern des Eingabestrings.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. SQLRPGLE Get und Set Prozeduren
    By iseries_user in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 11-05-16, 10:13
  2. Fully Free und SQLRPGLE
    By dschroeder in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 18-12-15, 12:01
  3. SQLRPGLE und Printerfile
    By Toschie in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 02-02-15, 14:28
  4. SQLRPGLE: Abfrage als Tabelle
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 10-11-14, 10:12
  5. Compilierung SQLRPGLE
    By B.Hauser in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 01-10-01, 17:31

Berechtigungen

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