[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Gehts eigentlich ohne mich ????

    "Prepare Using" ? Kenn ich nicht !!!

    Dein Problem, Peter, ist, dass Hostvariablen nicht "prepared" werden können sondern dies eine Eigenschaft des Pre-Compilers ist, schau dir mal die Auflösung im Spool an, dann verstehst du es besser.

    Im Prepare funktioniert also ":HOSTVAR" nicht, da ja HOSTVAR als Adresse nicht zur Verfügung steht.

    Wie wärs dann mit folgender Variante:

    SQLSTA = 'Select bla bla bla where Feld1 = ''' + Feld1 + ''''

    bzw bei numerischen Feldern:

    SQLSTA = 'Select bla bla bla where Feld1 = ' + %char(Feld1)

    So ist dann mit allen Bedingungen zu verfahren !

    Die 2. Alternative mit "?" (=ParameterMarkern) funktioniert nur beim OPEN !!
    Also:
    SQLSTA = 'Select bla bla bla where Feld1 = ?'
    Prepare ...

    open S1 using :Feld1, :Feld2, ...

    Achtung:
    Du benötigst dann allerdings für jede Variante ein eigenes Open-Statement, da jedem "?" ein passendes Feld zugeordnet werden muss.
    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
    Sep 2003
    Beiträge
    221
    Danke an Dieter (klar finde ich Deine Antworten
    auch h e u t e gut) und an den "frisch erholten" Urlauber, Fuerchau.
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  3. #3
    Registriert seit
    Sep 2003
    Beiträge
    221
    Noch eine Frage.

    Gibt es zu dem Thema "Embedded SQL" eine Buchempfehlung, am besten auf Deutsch. Bei Mr. Google kann ich dazu nichts finden.

    Denn ich würde das Thema gerne komplett verstehen. Und das ist im Moment bei mir noch nicht gegeben.

    Denn es ist alles viel komplexer wie ich dachte :-(


    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau
    "Prepare Using" ? Kenn ich nicht !!!
    Sorry ich hatte heute morgen gepennt, Peter arbeitet ja mit Cursor.

    PREPARE ... USING funktioniert, wenn man mit dynamischem SQL ohne Cursor arbeitet. Arbeitet man mit Cursor muss man die Parameter-Marker beim OPEN ersetzen.

    Bei dynamischem SQL ohne Cursor hat man 2 Möglichkeiten:
    1. Den String direkt mit EXECUTE IMMEDIATE auszuführen. Dabei wird der String bei jedem Aufruf in ein ausführbares SQL statement konvertiert.

    2. Statt EXECUTE IMMEDIATE kann man mit den SQL statements PREPARE und EXECUTE arbeiten. In diesem Fall kann man im String Parameter Marker setzen und diese dann beim PREPARE ersetzen. Da PREPARE und EXECUTE getrennte Befehle sind, kann man das gleiche SQL statement mehrfach aufrufen, ohne jedesmal den String in ein ausführbares SQL Statement konvertieren zu müssen.

    @Peter:
    Schau doch mal unter folgendem Link. Die Beschreibung ist zwar nur auf Englisch, aber recht einfach zu lesen mit vielen Beispielen:
    Embedded SQL

    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    @Birgitta

    Zitat Zitat von B.Hauser
    Sorry ich hatte heute morgen gepennt, Peter arbeitet ja mit Cursor.

    PREPARE ... USING funktioniert, wenn man mit dynamischem SQL ohne Cursor arbeitet. Arbeitet man mit Cursor muss man die Parameter-Marker beim OPEN ersetzen.

    Birgitta
    immer noch müd' oder schonn widder?

    Beim prepare werden keine Parametermarker besetzt, ob mit oder uhne Cursor, das macht ja auch keinen Sinn.

    Dieter

    PS: wie hat der anner gesagt: ein Glück das heit' Freitag iss!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Sep 2003
    Beiträge
    221
    @Birgitta

    Der Link ersetzt das von mir gesuchte Buch. Ist ja alles sehr schön erklärt. Und so schlecht ist mein Englisch ja auch nicht.

    Danke und Gutes Nächtle,

    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von BenderD
    @Birgitta



    immer noch müd' oder schonn widder?

    Beim prepare werden keine Parametermarker besetzt, ob mit oder uhne Cursor, das macht ja auch keinen Sinn.

    Dieter

    PS: wie hat der anner gesagt: ein Glück das heit' Freitag iss!
    @Dieter

    Das kommt davon, wenn man nur mal so schnell einen halbherzigen Blick in die SQL Referenz wirft und dort beim PREPARE ein Using sieht, statt sich die Quelle eines funktionnierenden Programms anzuschauen!

    Fürs nächste Mal gelobe ich Besserung!

    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    @Birgitta,

    warum solls dir anders gehen als mir, schließlich hat man ja noch eine kleine Nebenbeschäftigung und investiert nur begrenzt Zeit in Foren, Newsgroups etc.

    mfg

    Dieter

    Zitat Zitat von B.Hauser
    @Dieter

    Das kommt davon, wenn man nur mal so schnell einen halbherzigen Blick in die SQL Referenz wirft und dort beim PREPARE ein Using sieht, statt sich die Quelle eines funktionnierenden Programms anzuschauen!

    Fürs nächste Mal gelobe ich Besserung!

    Birgitta
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Execute funktioniert aber leider nicht bei "Select" sondern nur bei Nicht-Select-SQL's. Dort gibts dann auch Parametermarker die mit USING besetzt werden müssen.
    Wenn man dynamische Select's benötigt gehts nicht ohne Cursor.

    Ein Select, der nur 1 Zeile liefert, kann ohne Cursor allerdings nur als embedded Select verwendet werden. Liefert dieser allerdings doch mal mehr als 1 Zeile, gibts einen SQL-Fehler.
    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. SQLCOD -501
    By Bernd Wiezroek in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 10-04-06, 06:26
  2. SQLCOD -802 ???
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-10-05, 09:04
  3. Embedded SQL Newbie
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-10-04, 09:19
  4. embedded SQL in ILE RPG, UPDATE
    By Zupfl50 in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 06-10-04, 21:04
  5. Definition von SQLCOD
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-09-04, 14:52

Berechtigungen

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