-
SQL: IFS_WRITE_UTF8 mit Variablen
Moin,
ich möchte in einer SQL-Prozedur per IFS_WRITE_UTF8 Daten ins IFS schreiben. Solange ich dies
die Parameter als Konstanten (wie unten dargestellt) mitgebe, funktionierts.
CALL QSYS2.IFS_WRITE_UTF8(
PATH_NAME => '/home/MyFolder/testfile.txt',
LINE => '',
OVERWRITE => 'REPLACE',
END_OF_LINE => 'CRLF') ;
Ich möchte diese aber in Variablen zusammenstellen und deren Inhalt mitgeben. Dann wird die Prozedur
aber nicht ausgeführt. Weiß jemand die funktionierende Syntax?
Die Variante mit RPG-Programm, Exec SQL und Variablen per :Variable mitgeben bitte nicht vorschlagen.
Es soll nur SQL genutzt werden.
Danke!
-
Mir ist die Aufgabenstellung nicht ganz klar.
Was für Variablen meinst du wenn es nicht in RPG aufgerufen werden soll?
Du kannst in SQL Globale Variablen erstellen, die kannst du dann auch im CALL verwenden.
CREATE OR Replace VARIABLE deinelib.deinevar clob(1M);
-
Ich hab in der SQL-Prozedur per Declare Variablen definiert die die Werte enthalten
declare gblstring char(256)
set gblstring = '/mypath/myfile.html'
Sobald ich beim Call statt der Konstanten die Variable nehme, schlägt der Call fehl.
CALL QSYS2.IFS_WRITE_UTF8(
PATH_NAME => gblstring,
LINE => 'xxx',
OVERWRITE => 'REPLACE',
END_OF_LINE => 'CRLF') ;
-
Du musst die Variable qualifiziert mit der Lib angeben. Ansonsten sucht er sie (glaube ich) über den PATH (nicht LIBL) ... bin mir aber jetzt nicht mehr sicher.
-
Welche Fehlermeldung gibt es denn?
I.d.R. scheitert es dann, wenn der Job in CCSID 65535 läuft.
Die SQL-Prozedur wird in C erstellt.
Konstanten werden nicht umgewandelt, Variableninhalte jedoch von der JOB-CCSID in die Ziel-CCSID.
Wenn der Job auf Hex steht, weiß SQL nicht von welcher CCSID in UTF8 umgewandelt werden soll.
Dies sollte mit eentsprechender Meldung im Joblog stehen.
-
Nachtrag:
Wenn du eine IFS-Datei zeilenweise mit SQL schreiben willst, musst du dich auf arge Performancenachteile einstellen.
Jeder IFS-Write macht einen Open, Pos, Write, Close, Update Header im IFS.
Bei einem Test habe ich festgehstellt, dass ca. 10 Writes / Sekunde funktionieren.
Empfehlung hier ist, die Daten nach Möglichkeit in einer Variablen vom Typ CLOB sammeln, z.B. per LISTAGG um sie dann mit einem Durchgang zu schreiben.
Schneller war das Verfahren allerdings immer noch, die Daten in eine Tabelle zu schreiben und dann per CPYTOSTMF oder CPYFRMIMPF in einem Rutsch zu schreiben.
Bei unserem Test z.B. statt 30 Sekunden für 300 Zeilen, nur noch 1 Sekunde.
-
Du musst die Variable als VARCHAR definieren ... und sicherheitshalber solltest Du auch bei der Parameter-Übergabe eventuelle führende/folgende Blanks abtrimmen.
Code:
declare gblstring Varchar(256);
set gblstring = '/mypath/myfile.html';
CALL QSYS2.IFS_WRITE_UTF8(
PATH_NAME => Trim(gblstring),
LINE => 'xxx',
OVERWRITE => 'REPLACE',
END_OF_LINE => 'CRLF') ;
-
Danke an alle für die Hilfe!
@Fuerchau: CCSID's vom Job und den Variablen waren schon alle korrekt gesetzt. Danke für den Hinweis auf die Performance, das check ich mal aus.
@Birgitta: Danke für den Tip Varchar zu nehmen, das ist's wohl schlussendlich gewesen.
Similar Threads
-
By Erol in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 20-04-20, 11:57
-
By Malte in forum NEWSboard Java
Antworten: 2
Letzter Beitrag: 19-02-16, 10:01
-
By Tobse77 in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 25-07-07, 11:30
-
By HDPSTANEKE in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 21-06-07, 14:33
-
By THH in forum NEWSboard Programmierung
Antworten: 18
Letzter Beitrag: 19-10-06, 14:16
Tags for this Thread
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