-
RUNSQL im CL-Programm
In der INSERT-Anweisung möchte ich eine Variable verwenden, aber ich weiß nicht die richtige Syntax. Das falsche Programm sieht wie folgt aus:
PGM
DCL VAR(&CFIL) TYPE(*CHAR) LEN(4) VALUE ('0121')
RUNSQL REQUEST('INSERT INTO ALIB/BDATEI(FIL) VALUES(&CFIL)')
ENDPGM
Danke im voraus!
Samira
[Dieser Beitrag wurde von samik am 29. Januar 2002 editiert.]
-
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>RUNSQL REQUEST('INSERT INTO ALIB/BDATEI(FIL) VALUES(&CFIL)')[/quote]
den Befehl RUNSQL gibt es im OS/400 bis einschließlich R5.1 nicht.
3 Sachen fallen mir auf
- SQL kennt kein member Konzept : ALIB/BDATEI(FIL) ist für SQL nicht gültig
- die CL Variable steht innerhalb eine string Konstante, d.h. der Name wird weitergegeben, aber nicht der Inhalt
- die CL Variable &CFIL ist als character deklariert. wenn das in der Tabelle auch so ist, dann muß der Inhalt in Anführungszeichen übergeben werden
[Dieser Beitrag wurde von rmittag am 29. Januar 2002 editiert.]
-
Hallo,
der CL-Befehl der SQL-Befehle in einem CLP ausführt heisst RUNSQLSTM. Mit der Suchfunktion hier im Forum mal nach 'RUNSQLSTM' suchen und den Beitrag 'SQL in CL einbinden lesen'.
Für die Variablen-Übergabe mal nach 'CRTQMQRY' suchen und den Beitrag 'QRY und PARAMeter' lesen.
Ist zwar etwas kompliziert aber es funktioniert.
mfG
Jürgen Schnichels
-
Jan, danke für deine Antwort.
Der aktuelle OS/400 Stand ist V4R4.
RUNSQL funktioniert ohne Fehler, wenn ich statt &CFIL einen Wert in Anführungszeichen setze, also eine Zeichenkette.
Samik
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von rmittag:
den Befehl RUNSQL gibt es im OS/400 bis einschließlich R5.1 nicht.
3 Sachen fallen mir auf
- SQL kennt kein member Konzept : ALIB/BDATEI(FIL) ist für SQL nicht gültig
- die CL Variable steht innerhalb eine string Konstante, d.h. der Name wird weitergegeben, aber nicht der Inhalt
- die CL Variable &CFIL ist als character deklariert. wenn das in der Tabelle auch so ist, dann muß der Inhalt in Anführungszeichen übergeben werden
[Dieser Beitrag wurde von rmittag am 29. Januar 2002 editiert.][/quote]
-
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von samik:
In der INSERT-Anweisung möchte ich eine Variable verwenden, aber ich weiß nicht die richtige Syntax. Das falsche Programm sieht wie folgt aus:
PGM
DCL VAR(&CFIL) TYPE(*CHAR) LEN(4) VALUE ('0121')
RUNSQL REQUEST('INSERT INTO ALIB/BDATEI(FIL) VALUES(&CFIL)')
ENDPGM
Danke im voraus!
Samira
[Dieser Beitrag wurde von samik am 29. Januar 2002 editiert.][/quote]
-
In einer der vorigen Antworten hierzu wurde ausgesagt, daß SQL das Memberkonzept nicht kennt. Dieses Problem läßt sich lösen, indem das SQL-Statement ohne Memberangabe definiert wird und vor dem SQL ein OVRDBF ausgeführt wird. (Ggfs danach DLTOVR anwenden)
-
Hi Skipper,
OVRDBF ist da zum Überschreiben der Datei, aber ich wollte INSERT ausführen.
Samik
-
Hallo Samik,
wie schon in den Beiträgen angegeben gibt es
den Befehl RUNSQL nicht im OS400.
Deshalb liegt die Vermutung nahe, dass es sich bei dem RUNSQL bei Dir um ein
kleines Tool handelt.
Um zu prüfen wie das Tool funktioniert solltest Du einmal den Debugger (STRDBG..) starten und prüfen welche Meldungen erscheinen. Das Geheimnis vieler dieser Tools
ist der QueryManager.
Vielleicht hilfts ja
Gruss Michael
-
Mit "überschreiben" sind hier nicht die Daten in der Datei gemeint, sondern SQL wird lediglich klar gemacht, welche Teildatei auszuwählen ist (Standartmäßig wäre es *FIRST). OVRDBF "routet" sozusagen eine bestimmte Teildatei innerhalb eines Jobs auf den Namen der Datenbankdatei. Insofern hat skipper vollkommen recht. Manche sprechen "OVR" deshalb auch als "Override" aus, das klingt dann ein wenig verständlicher (Was nun die richtige Ausprache ist, weiß wohl nur Dr. Frank S.)
-
Hallo Samira,
das Problem liegt am Parameter REQUEST, der ja einen String erwartet, d.h. für Request müsste eine Variable definiert werden, die mit einer Konstante + weiteren Variablen gefüllt wird;
der Aufruf wäre dann RUNSQL REQUEST(&STRING);
das gleiche Problem hat man z.B. bei OPNQRYF, wenn der Select-Parameter dynamisch sein soll
MfG Günther
Similar Threads
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By Lichtblitz in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 22-06-06, 09:50
-
By petra1 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 13-07-05, 14:36
-
By Hubert in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 11-05-05, 13:25
-
By mk in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 25-09-04, 15:48
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