-
 Zitat von B.Hauser
Dein Problem liegt in der Verwendung der Host Variablen:
Beispiel:
PHP-Code:
SQLSTA = 'Select Feld1, Feld2, Feld3 from Tabelle_1
where Feld1 = ? and FeldNum = ?';
/End-Free
C/EXEC SQL PREPARE MySQL From SQLSTA
C+ using :HostVar1, :HostVar2
C/END-EXEC
Birgitta
Hallo Birgitta,
da hatte ich mich glatt zu früh gefreut.
Ich habe meinen PREPARE wie von Dir angegeben , abgeändert. Jedoch wenn ich den Befehl um
USING :HV1, :HV2, :HV3
erweitere, bekomme ich bei der Eingabe eine Sytaxerror, mit der Bemerkung "Schlüsselwort USING nicht erwartet....."
Und nun ?
Peter
-
Hallo Peter,
Du scheinst meine Antworten heute zwar nicht zu mögen...
aber immer noch:
open using
siehe auch einige postings vorher.
eine der Tricks hierbei ist auch, dass man ein prepared Cursor mehrfach öffnen kann (und dadurch Zeit spart)
mfg
Dieter Bender
 Zitat von peter.kinne
Hallo Birgitta,
da hatte ich mich glatt zu früh gefreut.
Ich habe meinen PREPARE wie von Dir angegeben , abgeändert. Jedoch wenn ich den Befehl um
USING :HV1, :HV2, :HV3
erweitere, bekomme ich bei der Eingabe eine Sytaxerror, mit der Bemerkung "Schlüsselwort USING nicht erwartet....."
Und nun ?
Peter
-
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.
-
Danke an Dieter (klar finde ich Deine Antworten
auch h e u t e gut) und an den "frisch erholten" Urlauber, Fuerchau.
-
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
-
 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
 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!
-
@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
-
 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,
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 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
-
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.
Similar Threads
-
By Bernd Wiezroek in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 10-04-06, 06:26
-
By Stefan_Sk in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 04-10-05, 09:04
-
By JonnyRico in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 27-10-04, 09:19
-
By Zupfl50 in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 06-10-04, 21:04
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks