-
Habe die Fehler oben mittlerweile alle behoben. Bin wieder bei programmiertechnischen, diesmal syntactischen Fehlern angelangt.
PHP-Code:
C/EXEC SQL C+ whenever SQLERROR goto SQLABEND C/END-EXEC * C/EXEC SQL C+ connect to :Database user :UserId using :Password C/END-EXEC C/EXEC SQL C+ Declare MyCsr Cursor for C+ Select * From TABLE where NAME = :NAME C/End-Exec
C/EXEC SQL C+ Open MyCsr C/END-EXEC C C do *HIVAL C/EXEC SQL C+ Fetch Next from MyCsr C+ into :NAME, C+ :RECORD, C+ :DESC C/END-EXEC C/EXEC SQL C+ Close MyCsr C/END-EXEC C/EXEC SQL C+ connect reset C/END-EXEC
Ich bekomme jedoch beim Fetch einen Fehler:
PHP-Code:
C+ Fetch Next from MyCsr RNV8526E Anweisung /EXEC SQL enthält Fehler: SQL0104N Auf "<Kennung>" folgte das unerwartete Token "FROM". Zu den m”glichen Token geh”ren: "INTO".
Ich habe das so aber schon öfter gesehen. Also Fetch Next from CURSOR into :VAR1, :VAR2
Wo liegt mein Fehler?
Vielen Dank.
Gruß Martin
EDIT: Ich kann auch keinen Qualifizierten Namen angeben im Format LIB/FILE. Da bekomme ich die Fehlermeldung das:
PHP-Code:
Ursache . . . . : Einer der folgenden Fehler trat auf: -- Die für den qualifizierten Objektnamen verwendete Syntax ist für die angegebene Benennungsauswahl nicht gültig. Bei der Systembenennung ist die qualifizierte Form eines Objektnamens Schemaname/Objektname. Bei der SQL-Benennung ist die qualifizierte Form eines Objektnamens Berechtigungsname.Objektname. -- Die für den qualifizierten Objektnamen verwendete Syntax ist nicht zulässig. Benutzerdefinierte Datenarten können in der Systemnamenskonvention in Parametern und SQL-Variablen einer SQL-Prozedur oder -Funktion nicht mit dem Schema qualifiziert werden.
Wenn ich mir nur ein SQLRPGLE Programm schreibe funktioniert beides wunderbar.
-
Nochmal wegen dem oben. Habe versucht eine Verbindung via ODBC aufzubauen, was auch funktionierte aber ich sah nur die Systemtabellen nicht die normalen Libraries. Könnte das jetzt nicht auch der Fall sein? Das würde erklären warum es nicht funktioniert.
Ich habe die Verbindung zum Server über DB2 UDB-Steuerzentrale getestet. Das funktioniert aber nur über den "Standart". als ich dann in der normalen Steuerzentralensicht auf die tabellen zugreifen wollte, will er sich mit CLI verbinden was aber nicht funktioniert. Wie kann ich die Verbindung auf "Standart" umstellen bzw was muss ich tun damit es mit CLI funktioniert?
EDIT: CLI-Verbindung ist fehlgeschlagen.
SQL30082N Die Verbindung konnte auf Grund der Sicherheitsbedingung "24" ("USERNAME AND/OR PASSWORD INVALID") nicht hergestellt werden. SQLSTATE=08001.
- Aber Pwd und Userid müssen stimmen weil die normale "Standartverbindung" funktioniert.
Bei der Steuerzentrale bekomme ich die Fehlermeldung wenn ich die Tabellen abrufen will:
PHP-Code:
[IBM][CLI Driver][AS] SQL0805N Paket "NULLID .SYSSH200" nicht gefunden. SQLSTATE=51002
Erklärung:
Die Anweisung kann nicht beendet werden, da das erforderliche Paket im Katalog nicht gefunden wurde.
Das Paket "<name-des-pakets>" weist eines der folgenden Formate auf:
o 'paketschema.paketname 0Xkontoken', wobei das Konsistenztoken in hexadezimaler Form angegeben wird.
o 'paketschema.paketname.paketversion'. Wenn die Paketversion eine leere Zeichenfolge ist, fällt der Teil '.paketversion' weg.
o '%.paketname'. Wenn für den Parameter CURRENT PACKAGE PATH ein Wert festgelegt wird. Die Gruppe mit Schemanamen im Parameter CURRENT PACKAGE PATH wird durch das Prozentzeichen ('%') festgelegt.
Mögliche Ursachen für den (SQLCODE) dieser Nachricht:
o Das Paket wurde nicht gebunden oder es wurde gelöscht.
o Für die Ausführung eines DB2-Dienstprogramms oder einer CLI-Anwendung kann es erforderlich sein, die DB2-Dienstprogramme erneut an die Datenbank zu binden.
o '%.paketname'. Wenn für den Parameter CURRENT PACKAGE PATH ein Wert festgelegt wird, jedoch in keinem Schema im Parameter CURRENT PACKAGE PATH ein Paket mit dem Namen 'paketname' gefunden wurde.
Wenn die Versions-IDs für paketschema.paketname bereits verwendet werden, können Pakete vorhanden sein, deren Schema und Name übereinstimmen. Das korrekte Paket wird jedoch nicht gefunden, da die vorhandenen Pakete nicht mit der erforderlichen Version bzw. dem erforderlichen Konsistenztoken übereinstimmen. Für ein Paket müssen alle drei Bestandteile des Paketnamens übereinstimmen. Bei Verwendung mehrerer Versionen kann diese Nachricht auch aus den folgenden Gründen ausgegeben werden:
o Die Version der ausgeführten Anwendung wurde vorkompiliert, kompiliert, und es wurde eine Verbindung hergestellt. Die Anwendung wurde jedoch nicht gebunden, oder sie wurde gebunden, aber diese Version des Pakets wurde gelöscht.
o Die Anwendung wurde zwar vorkompiliert und gebunden, aber sie wurde nicht kompiliert, und/oder es wurde keine Verbindung hergestellt. Deshalb ist die ausgeführte Anwendung nicht aktuell.
o Das Paket wurde anhand einer Bindedatei gebunden, die durch eine andere Vorkompilierung der Quellendatei generiert wurde als die Vorkompilierung, aus der die geänderte Quellendatei hervorging, die kompiliert und mit der ausführbaren Datei der Anwendung verbunden wurde.
o Eine neue Anwendung wurde mit dem Namen (und der Version) eines bereits vorhandenen Pakets gebunden, so dass das vorhandene Paket ersetzt wurde. Wenn die dem ersetzten Paket zugeordnete Anwendung ausgeführt wird, kommt es zu diesem Fehler.
In allen genannten Fällen entspricht das Konsistenztoken der Anforderung nicht dem Konsistenztoken der vorhandenen Version. Deshalb wird das Paket nicht gefunden.
Die Anweisung kann nicht verarbeitet werden.
Benutzeraktion:
Korrigieren Sie den Namen des Pakets, oder binden Sie das Programm. Wenn die ausgeführte Anweisung nicht an die Datenbank gebunden ist, bitten Sie den Datenbankadministrator, die erforderlichen Bindeoperationen durchzuführen. Stellen Sie sicher, dass es sich bei der ausgeführten Anwendung bzw. dem ausgeführten Objektmodul um den kompilierten und verbundenen geänderten Quellcode handelt, der dem Befehl PRECOMPILE und BIND zugeordnet wurde, der das Paket generiert hat.
Wenn für den Parameter CURRENT PACKAGE PATH ein Wert festgelegt wird, stellen Sie sicher, dass das Schema, in dem das Paket enthalten ist, im Parameter CURRENT PACKAGE PATH angegeben wird.
Die folgenden SQL-Anweisungen können zur Abfrage des Katalogs verwendet werden, um festzustellen, ob unterschiedliche Paketversionen vorhanden sind.
SELECT PKGSCHEMA, PKGNAME, PKGVERSION, UNIQUE_ID FROM SYSCAT.PACKAGES WHERE PKGSCHEMA='paketschema' und PKGNAME='paketname'. Beachten Sie, dass die Spalte UNIQUE_ID dem Konsistenztoken entspricht.
Falls die DB2-Dienstprogramme erneut an die Datenbank gebunden werden müssen, kann der Datenbankadministrator dies mit einem der folgenden CLP-Befehle vom Unterverzeichnis bnd des Exemplars aus vornehmen, während er mit der Datenbank verbunden ist:
o "DB2 bind @db2ubind.lst blocking all grant public" für die DB2-Dienstprogramme
o "DB2 bind @db2cli.lst blocking all grant public" für CLI.
Benutzer eines Systems zusammengeschlossener Datenbanken: Stellen Sie sicher, dass die für den Server mit zusammengeschlossenen Datenbanken erforderlichen Pakete in den entsprechenden Datenquellen gebunden werden. Weitere Informationen zum Binden von Paketen enthält das Handbuch Systeme zusammengeschlossener Datenbanken .
sqlcode : -805
sqlstate : 51002
EDIT2: Teilweise scheint CLI zu funktonieren. Beim Test des Assistenten sagt er "CLI-Verbindung erfolgreich getestet" aber auf Tabellen kann ich trotzdem nicht zugreifen.
-
Bin mittlerweile weitergekommen. Das Programm spring mit einem Status "51002" aus dem Programm wenn ich den Cursor öffnen will. Dh. "SQL package &1; in &2; not found."
Ich habe herausgefunden das bei ILE RPG Programmen beim Compilieren wichtige Variablen gesetzt werden.
PHP-Code:
* * * To compile: * * CRTSQLRPGI PGM(XXX/SQL001RG) SRCFILE(XXX/QRPGLESRC) * * * COMPILING. In order to compile this program you will need * to use options which allow it to work correctly * between machines. These options are--- * * COMMIT = *NONE * RDB = Machine name that you will connect to. * DLYPRP = *YES * SQLPKG = The name & library that you want to * use for the package. This will put the * package on the RDB machine that you * specify. *
Die Frage ist nur wie ich SQLPKG bei VARPG setze, denn darin liegt anscheinend mein Fehler.
Gruß Martin
-
CRTSQLPKG
Boh ej,
Dein Tempo ist ja der pure Wahnsinn...
Ich bin mir nicht sicher, aber hast Du Dir schon mal CRTSQLPKG angesehen?
k.
-
 Zitat von kuempi von stein
Boh ej,
Dein Tempo ist ja der pure Wahnsinn...
Ich bin mir nicht sicher, aber hast Du Dir schon mal CRTSQLPKG angesehen?
k.
Danke aber deinen Sarkasmus kannst du behalten.
CRTSQLPKG bringt mir nichts da es nur für AS400 Programme ist. Da mein VARPG Programm nicht auf der AS400 liegt bringt mir das nichts.
Gruß Martin
-
Nö, ich hab das gut gemeint. Nix Sarkasmus.
Bin wirklich beeindruckt.
gruss zurück
kuempi
-
 Zitat von kuempi von stein
Nö, ich hab das gut gemeint. Nix Sarkasmus.
Bin wirklich beeindruckt.
gruss zurück
kuempi
Sorry hatte sich für mich so angehört. Und normalerweise ist SQL auch bei keiner Programmiersprache ein Ding. Aber langsam verstehe ich warum mir überall geraten wird SQL in ILERPG Programm auszulagern. Das ist dort ja ganz einfach.
Gruß Martin
EDIT: Habe gerade einen alten Thread hier gefunden wo jm genau dasselbe Problem wie ich hat/hatte. Dort wurde anscheinend auch keien Lösung gefunden, bzw nicht gepostet. ;(
EDIT2: Hab es geschafft das BND File an die DB zu binden(über eine db2 console: connect to; bind pfad\file bindmember(owner, sqlerror...); connect reset), der Fehlerstatus 51002 besteht jedoch weiterhin. Hat jm eine Idee? Vtl noch etwas mit dem Paket bei den Erstellungsoptionen?
-
Mittlerweile funktioniert Emb. SQL.
Man muss Binde- und Packetnamen angeben und der User der sich auf die DB connected braucht eine Collection/Schema dort.
PS: Aber die Fehlermeldung mit "Package not found" war ja wohl ein Witz. Es war eine Collection die gefehlt hatte nichts anderes...
-
Hallo,
ich hätte noch eine Frage bzgl. DB2/Connect. Das ist ja das (mindeste)
was man braucht um auf die i5 UDB zugreifen zu können, richtig?
Da dieser DB2 ja auch bei jedem User installiert sein muss, wollte ich
fragen welche Edition(
http://www-306.ibm.com/software/info/ecatalog/de_DE/D.html?&S_TACT=none&S_CMP=no\
ne
) ihr mir dafür empfehlen würdet und warum. Also zb.: Für Entwickler
Edition: Xyz weil ... und für User Edition: ABC weil...
Danke!
Gruß Martin
-
Eigentlich muss es auch sowas wie eine Kopierlizenz geben, also im Rahmen der Anwendung eine kostenlose Installation des reinen DB2/Clients für embedded SQL.
Ich kann mir nicht vorstellen, dass jemand bereit ist pro PC eine eigene DB2/Connect-Lizenz zu erwerben nur weil die Anwendung mit embedded SQL arbeitet.
-
 Zitat von Fuerchau
Eigentlich muss es auch sowas wie eine Kopierlizenz geben, also im Rahmen der Anwendung eine kostenlose Installation des reinen DB2/Clients für embedded SQL.
Ich kann mir nicht vorstellen, dass jemand bereit ist pro PC eine eigene DB2/Connect-Lizenz zu erwerben nur weil die Anwendung mit embedded SQL arbeitet.
Es sollte soetwas geben aber bislang habe ich nichts gefunden und für IBM ist es ein gefundenes Fressen, da verdienen sie sich ne goldene Nase dran.
Similar Threads
-
By muadeep in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-06, 13:25
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 18-06-06, 12:14
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
-
By woki in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-04-04, 12:09
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