View Full Version : SQL-Befehl im CL
Hallo AS/400-Gemeinde, wie bette ich einen SQL-Befehl (z.B. "delete from bib/dat where kdnr = 4711) in ein CL ein?
Hi!
Wenn es sich um ein Statement handelt, welches immer gleich bleibt kannst du das STatement in eine Teildatei schreiben und diese dann mittels RUNSQLSTM im CL ausführen lassen.
RUNSQLSTM SRCFILE(LIB/SRCFILE) SRCMBR(MEMBER)
!! Auf die COMMIT-Steuerung aufpassen !!
MfG
Oder die SQL-Anweisung in ein QM-Query schreiben und dieses dann mit STRQMQRY aufrufen. Dabei sind dann auch Variablen möglich (bei den Variablennamen auf Groß/Kleinschreibung achten!).
Danke für die schnelle Antwort. Habe eine QSQLSRC mit einem Member SQLCMD001 angelegt mit einerm Select-Befehl und im CL den entspr. RUNSQLSTM. Fehler SQL9010 kommt ... Was ist die "Commit"-Steuerung?
Soweit ich weiß ist beim RUNSQLSTM leider kein SELECT möglich. Beim RUNSQLSTM wird aber eine Spooldatei erstellt. Da steht vielleicht genaueres zu diesem Fehler drin.
Die COMMIT-Steuerung regelt, wie und wann Änderungen an Dateien festgeschrieben werden. Falls du das nicht einsetzt, dann solltest du den Parameter "COMMIT-Steuerung" beim Aufruf mit RUNSQLSTM auf *NONE setzen.
Hi!
Vieleicht hilft dir das InfoCenter weiter und ich bin mir nicht sicher ob eine SELECT - Anweisung mit dem RUNSQLSTM funktioniert.
Updates und Deletes sollten aber funktionieren.
Run SQL Statements (RUNSQLSTM) (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/cl/runsqlstm.htm?resultof=%22%52%55%4e%53%51%4c%53%54 %4d%22%20%22%72%75%6e%73%71%6c%73%74%6d%22%20#RUNS QLSTM.COMMIT)
MfG
Danke, aber noch eine Frage: Welche Art muß die Teildatei haben? Ich habe sie als "TXT" angelegt
Hallo,
schau dir mal folgenden Beitrag an:
http://www.newsolutions.de/forum-systemi-as400-i5-iseries/system-i-hauptforum/11236-dynamisches-sql-einem-cl-erstellen.html
Den RUNSQL Command kannst du dir hier runterladen:
Willkommen zu Schatte's Seite (http://schatte.no-ip.info/downloads/index.htm)
Gruß
Matthias
Alles klar: Nach Einfügen des Commit-Parameters (*none) läuft mein DELETE über den Membereintrag sauber.
Nur so am Rande:
RUNSQLSTM ist nur in Verbindumg mit STRSQL zu haben.
Ist STRSQL nicht möglich (nicht installiert), gibts auch kein RUNSQLSTM.
Andererseits sind QMQRY-Objekte immer ausführbar.