PDA

View Full Version : SQL und ich verstehe da etwas nicht



DKSPROFI
28-04-22, 11:17
Moin *all, ich verstehe das etwas nicht. Wir wollen einen Prozess automatisieren, der sonst immer manuelle gemacht wurde. Wir holen Daten aus einen fernen System mit SQL. Mit strsql oder über ACS: Insert INTO / (SELECT * FROM /Ferne Bibliothek>/) funktioniert. Aber mit einem RPG-Programm nicht. Exec SQL Insert INTO / (SELECT * FROM /Ferne Bibliothek>/) oder String = Insert INTO / (SELECT * FROM /Ferne Bibliothek>/) ; Exec SQL Execute Immediate : string ; gibt es den SQL Fehler SQL0805 SQL Paket xxxxxx nicht gefunden. Ich verstehe nicht das es manuell geht, per Programm aber nicht. Was muss man da denn beachten? mfg DKSPROFI

Robi
28-04-22, 11:45
du brauchst ein SQL-Paket

CRTSQLPKG
ist ewig her, must du dich einlesen ...

DKSPROFI
28-04-22, 12:01
du brauchst ein SQL-Paket CRTSQLPKG ist ewig her, must du dich einlesen ... Danke, werde ich mal versuchen, ist aber umständlich, wenn etwas funktioniert, aber in einem Programm was anderes dafür notwendiig ist. mfg DKSPROFI

Fuerchau
28-04-22, 18:26
Bei der Erstellung eines Programmes wird Name und Lib des SQL-Paketes im RPG-Objekt vermerkt.
Name und Lib können per "exec sql set option" festgelegt werden.
Hier beitet sich durchaus die QGPL an, da die ja immer da ist.
Bei der Verbindung zum Ziel wird die Lib auf dem Ziel gesucht um das integrierte Paket dort dann abzulegen.
Der Nachteil allerdings ist dann immer: das Paket im Ziel hat den Ersteller als Eigner und Public exlude als Berechtigung. Hier muss ggf. Owner (des Programmes) gewählt werden, was ja auch für die Anmeldung gilt.

Mittels CRTSQLPKG kann man aus dem Programm das SQL-Paket extrahieren und manuell im Zielsystem installieren um anschließend die Berechtigung erteilen.
Allerdings muss dies nach jedem CRTxxxPGM wiederholt werden, da sich die Signatur ggf. ändert.