-
SQL Problem
Moin zusammen,
ihr seit meine letzte Hoffnung ich weiß nicht weiter.
.
Auf der Power 9 V7R4 erstelle ich eine Datei, diese möchte als Excel automatisch ins Laufwerk legen für unser neues CRM System zur Automatisierung der Daten.
Was ich bisher gelesen habe muss das mit SQL erledigt werden.
Bei Schritt 3 kommt immer der Fehler SQL9010 ich habe schon mehrere Varianten laut KI ausprobiert
Folgende Befehle laufen ab:
Schritt 1:
DLTF FILE(QGPL/V_ARKU240A)
MONMSG MSGID(CPF2105)
Schritt 2:
RUNSQL SQL('CREATE VIEW QGPL.V_ARKU240A AS +
SELECT KUNDE AS "Konto", +
KDNR AS "Kundennummer", +
ADRESS AS "Adresse", +
VERTRE AS "Vertreter", +
EMAIL AS "E-Mail", +
HOMEPA AS "Website", +
TELEF AS "Telefon", +
MOBIL AS "Mobil", +
ANSPRE AS "Ansprechpartner", +
KUNDGR AS "Kundengruppe", +
KUNDEI AS "Kundeneinteilung" +
FROM GULIB.ARKU240A') +
COMMIT(*NONE)
Schritt 3:
RUNSQL SQL('CALL SYSTOOLS.GENERATE_SPREADSHEET( +
PATH_NAME => ''/BILD5/XFIRMA.XLSX'', +
SPREADSHEET_QUERY => ''SELECT * FROM QGPL.V_ARKU240A'', +
SPREADSHEET_TYPE => ''XLSX'', +
COLUMN_HEADINGS => ''LABEL'')') +
COMMIT(*NONE)
Vielleicht kann mir jemand helfen.
Vielen Dank
Joachim
-
1. ich habe keine Ahnung, wir machen das mit einem Tool von uns.
2. warum call ?
lt doku
VALUES SYSTOOLS.GENERATE_SPREADSHEET(
PATH_NAME => '/usr/query_spreadsheet',
SPREADSHEET_QUERY => 'select order_number, customer, balance from orders where shipped = ''YES''',
COLUMN_HEADINGS => 'COLUMN');
https://www.ibm.com/docs/en/i/7.4.0?...calar-function
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Was steht denn im Joblog? Eigentlich müsste da genauer zu erkennen sein, wo das Problem liegt.
-
Das ist ja eine Scalare Funktion, die im Endeffekt wohl auch etwas zurück gibt.
Auch "values" ist eine einfach Form eines Selects.
"Values (1, 2, 'ABC')"
Und da liegt das Problem:
RUNSQL kann keine Resultsets verarbeiten!
Leider ist nicht dokumentiert, was denn da zurück kommt.
Mach also ein ILERPG draus, dann kannst du auch statt dltf einen drop table per SQL machen.
-
Da scheint die KI ziemlich gelogen zu haben!
Mir stellt sich zunächst die Frage:
Warum zunächst eine View erstellen? Warum nicht die Datei direkt angeben?
Wie bereits in den vorherigen Kommentare erklärt:
GENERATE_SPREADSHEET ist eine Funktion mit Rückgabe-Wert und kann deshalb nicht mit dem SQL CALL-Befehl aufgerufen werden.
Bei dynamischem SQL müssen Hochkommata verdoppelt werden, also '' und keine Anführungszeichen. Allerdings ist der Unterschied nicht genau zu erkennen.
RUN SQL unterstützt keine Funktionen und kann damit den GENERATE_SPREADSHEET nicht direkt aufrufen.
... aber man kann etwas "rumtricksen".
Das folgende CL-Programm sollte ausführbar sein.
Ich habe ein Dynamisches Compound-Statement (BEGIN ... END) verwendet, in dem die Variable RC definiert wird um den Rückgabe-Wert aus der Funktion GENERATE_SPREADSHEET aufzunehmen. Anschließend wird die Funktion GENERATE_SPREADSHEET ausgeführt. Beim Aufruf, habe ich anstatt eines SELECT-Statements direkt die Tabelle und Tabellen-Bibliothek angegeben.
Auf eine Fehlerbehandlung habe ich an dieser Stelle verzichtet.
Das Dynamische Compound Statement bewirkt, dass bei der Ausführung eine Stored Procedure in der QTEMP erstellt und gleich ausgeführt wird.
... Stored Procedures wiederum können mit RUNSQL ausgeführt werden.
Code:
PGM
DCL VAR(&StmtSQL) TYPE(*CHAR) LEN(4096)
CHGVAR VAR(&STMTSQL) +
VALUE('Begin +
Declare RC Integer Default 0; +
Set RC = SysTools.Generate_Spreadsheet( +
PATH_NAME => ''/Dir1/Dir2/FileName'', +
LIBRARY_NAME => ''YOURSCHEMA'', +
FILE_NAME => ''YOURTABLE'', +
SPREADSHEET_TYPE => ''xlsx'', +
COLUMN_HEADINGS => ''LABEL'', +
OVERWRITE => ''REPLACE''); +
Return; +
End')
RUNSQL SQL(&StmtSQL) COMMIT(*NONE)
RETURN: RETURN
EOP: ENDPGM
-
Die View macht schon Sinn, wenn man keine sprechenden Spaltennamen hat.
Und die Hochkommata sind verdoppelt, sonst hätte es einen Sytaxfehler gegeben.
Ein Dynamisches Compound-Statement ist da nicht gerade performant, wenn immer erst ein Programm erstellt werden muss.
Es lohnt sich halt, über embedded SQL nachzudenken:
exec sql set : RC = SysTools.Generate_Spreadsheet( ... );
Man könnte sich dafür auch eine statische Prozedur generieren, die die Funktion einbettet und immer mit Parametern aufrufbar ist.
-
Hallo,
erstmal vielen Dank für die Anregungen und Beispiele.
Das Problem ist das ich für das Monday CRM genaue Feldbeschreibungen brauche, deshalb der Umweg über den View, damit die Datensätze zugeordnet und importiert werden können und ganz wichtig es muss eine .xlsx Datei sein eine CSV Datei ist zu groß ab 10 MB funktioniert es nicht.
Den Vorschlag von Frau Hauser habe ich getestet lief auch durch aber es wurde keine Datei im IFS gelegt.
PGM
DCL VAR(&STMTSQL) TYPE(*CHAR) LEN(4096)
DLTF FILE(QGPL/V_ARKU240A)
MONMSG MSGID(CPF2105)
/* 2. TEMPORÄREN VIEW MIT IHREN GEWÜNSCHTEN BESCHREIBUNGEN ANLEGEN */
RUNSQL SQL('CREATE VIEW QTEMP.V_ARKU240A AS +
SELECT KUNDE AS "Konto", +
KDNR AS "Kundennummer", +
ADRESS AS "Adresse", +
VERTRE AS "Vertreter", +
EMAIL AS "E-Mail", +
HOMEPA AS "Website", +
TELEF AS "Telefon", +
MOBIL AS "Mobil", +
ANSPRE AS "Ansprechpartner", +
KUNDGR AS "Kundengruppe", +
KUNDEI AS "Kundeneinteilung" +
FROM GULIB.ARKU240A') +
COMMIT(*NONE)
CHGVAR VAR(&STMTSQL) +
VALUE('BEGIN +
DECLARE RC INTEGER DEFAULT 0; +
SET RC = SYSTOOLS.GENERATE_SPREADSHEET( +
PATH_NAME => ''/HOME/XAUSGABE'', +
LIBRARY_NAME => ''QTEMP'', +
FILE_NAME => ''V_ARKU240A'', +
SPREADSHEET_TYPE => ''xlsx'', +
COLUMN_HEADINGS => ''LABEL'', +
OVERWRITE => ''REPLACE''); +
RETURN; +
END')
ENDPGM
Jetzt fällt mir nichts mehr ein habe es seit gestern probiert weiß auch nicht mehr weiter.
Vielen Dank für die Anregungen
Joachim
-
Excel Sheets mit SQL erstellen hab ich mal gleich in die Tonne getreten, da habe ich mich viel zu fest aufgeregt. Daher habe ich mir eine kleine CLLE geschrieben und transferiere das Ganze mittels ACS. Die Geschwindigkeit lässt etwas zu wünschen übrig, doch SQL benützt die gleiche Schiene.
Das Vorgehen wäre dann folgendes: Du erstellst eine IBM i DB Datei mit den korrekten Angaben, es ginge mit ACS auch die Headers korrekt zu übertragen, was m.E. sowieso das Beste wäre. Dann ein Aufruf mit ACS CLLE und fettich!
Wenn du magst stell ich die Source für nen Appel und Ei hier rein.
kf
-
Den Vorschlag von Frau Hauser habe ich getestet lief auch durch aber es wurde keine Datei im IFS gelegt.
Bei mir läuft es problemlos durch ... und erzeugt auch das Excel-Dokument im IFS.
Könnte sein, dass die QTEMP nicht zulässig ist. Versuch' mal die View in eine Permanente Bibliothek (z.B. QGPL) zu erstellen.
-
 Zitat von B.Hauser
Bei mir läuft es problemlos durch ... und erzeugt auch das Excel-Dokument im IFS.
Könnte sein, dass die QTEMP nicht zulässig ist. Versuch' mal die View in eine Permanente Bibliothek (z.B. QGPL) zu erstellen.
Hallo Frau Hauser,
mit der Lib QGPL habe ich es auch getestet leider auch kein Ergebnis im IFS.
Interessant ist das auch keine Fehlermeldung kommt ob es irgendwo knallt.
Schöne Grüsse
Joachim G.
-
 Zitat von camouflage
Excel Sheets mit SQL erstellen hab ich mal gleich in die Tonne getreten, da habe ich mich viel zu fest aufgeregt. Daher habe ich mir eine kleine CLLE geschrieben und transferiere das Ganze mittels ACS. Die Geschwindigkeit lässt etwas zu wünschen übrig, doch SQL benützt die gleiche Schiene.
Das Vorgehen wäre dann folgendes: Du erstellst eine IBM i DB Datei mit den korrekten Angaben, es ginge mit ACS auch die Headers korrekt zu übertragen, was m.E. sowieso das Beste wäre. Dann ein Aufruf mit ACS CLLE und fettich!
Wenn du magst stell ich die Source für nen Appel und Ei hier rein.
Moinsen,
im Moment erstelle ich Daeien per Hand über den Datentransfer ACS.
Wäre toll wenn ich die Sourcen für nen Appel und Ei erhalten könnte.
Leider haten wir hier schon Schützenfest dann seht das Dorf KOPF so das wir kein Bier trinken könnten.
Danke
Similar Threads
-
By labm in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 07-07-21, 08:37
-
By JonnyRico in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 22-09-08, 14:18
-
By zannaleer in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 17-12-04, 12:41
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-10-01, 14:24
-
By rebe in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 07-09-01, 13:55
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