-
Besten Dank für Eure Hilfe.
Die Abbruchnachricht mit SNDPGMMSG im CL funktionierte ohne etwas umstellen zu müssen. Mein Problem ist damit gelöst. Ich bin begeistert :-)
Allerdings finde ich es schwach von IBM die Rückgabeparameter, die es in der Microsoft ActiveX Data Objects x.x Library seit Ewigkeiten gibt, nicht zu implementieren. Könnte man ggf. hier komplett auf die IBM.Data.DB2.iSeries.dll verzichten und statt dessen die ActiveX Data Objects Library als COM-Objekt einbinden? Nach meiner Recherche sollte das funktionieren. Leider stieß ich nicht auf den Code für parametrisierten Programmaufruf.
Damit wäre auch die Registrierung als SQL Stored Procedur unnötig.
-
Es liegt nicht an der IBM sondern an deiner fehlenden Deklaration einer Prozedur/Funktion.
Woher soll die DB denn den Typ (IN/OUT/INOUT) selbständig erkennen?
Bei anderen DB's kann man ohne Deklaration von prozeduren gar ncihts aufrufen.
-
Ohne ein umfassendes Beispiel komme ich hier vorerst nicht weiter.
Warum aber dann ActiveX ohne die SQL-Registrierung auskommt ist mir schleierhaft. Aktuell erscheint mir dieses Thema sehr undurchsichtig. Aber besten Dank ...
-
Das sind nun 2 ganz verschiedene Dinge!
ActiveX:
Hier werden dir nur Möglichkeiten der Programmaufrufe gegeben.
Die Parameter legst du selber zur Laufzeit fest und zwar unabhängig davon, ob sie zum Programm passen oder nicht. Wenn die Parameter dann falsch sind hast du Pech gehabt.
Du kannst sowohl Einzelparameter als auch Strukturen definieren. Und für die Umwandlung ASCII/EBCDIC bist du auch noch selber verantwortlich.
SQL:
Der Standard verlangt explizite Deklarationen von Prozeduren und Funktionen.
Die SQL-Runtime prüft nun sogar ob die übergebenen Parameter zur Deklaration passt oder ggf. auch konvertierbar sind.
Durch sog. "Überladung" kann ich den selben Namen mit anderen Parametertypen mehrfach verwenden. SQL erkennt und findet den richtigen Aufruf.
Da die IBM nun mal die Faulheit der AS/400-Programmierer kennt hat sie einen vereinfachten Aufruf ermöglicht, der mit dem Standard aber auch gar nichts zu tun hat.
Hier kann man also ebenso Programme aufrufen. Allerdings sind hier nur einfache Parameter (gepackte Dezimale und Zeichen) erlaubt da durch den Text das Format bestimmt wird.
Also eine schöne aber eine absolut unsichere und gefährliche Sache.
Vorteil der Deklaration ist aber z.B. bei Funktionen die Verwendung in fast jedem SQL, was du bei ActiveX eben nicht kannst.
Beispiele findest du genug in den Handbüchern und im Forum.
-
Vielen Dank für die Bemühung. Gibt es einen Befehl, der zeigt welche UDF in einer Bibliothek registriert wurde, bzw. wie eine Registrierung entfernt wird?
-
select * from sysprocs <= Prozeduren, SYSFUNCS = Funktionen
where SPECIFIC_SCHEMA = 'MYLIB' <= kann man ja auch weglassen
drop procedure xxxx
drop function xxxx
-
Dann danke ich für Ihre Bemühung und schließe zunächst dieses Thema.
So bald als möglich werde ich damit experimentieren.
-
Hier ein Beispiel für die Definition eines externen Programms in einer SQL-Procedure.
Code:
-- Erzeugen der Prozedur:
CREATE PROCEDURE edpgmlib/prcBVS9KF01 (
OUT KF_REC_ID DECIMAL(15, 0) ,
OUT KF_PFL_ID DECIMAL(3, 0) )
LANGUAGE RPGLE
NOT DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'EDPGMLIB/BVS9KF01'
PARAMETER STYLE SQL ;
Vielleicht hilft es ja weiter.
Dieter
-
Das dürfte schon ein Problem werden: "PARAMETER STYLE SQL".
-
Kommt darauf an, wie das RPG-Programm das weiterverarbeitet. Ich habe mir das Beispiel schnell zusammenkopiert. Aber natürlich ist "PARAMETER STYLE GENERAL" die bessere Wahl. Sorry.
Dieter
-
PARAMETER STYLE SQL ist schon die bessere Wahl da man mehr Einfluss mit NULL-Values gewinnt.
Aber das ist halt nicht für jeden Probanden geeignet.
Similar Threads
-
By Malte in forum NEWSboard Java
Antworten: 2
Letzter Beitrag: 19-02-16, 11:01
-
By MR-BN in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 02-10-15, 16:40
-
By harkne in forum NEWSboard Programmierung
Antworten: 20
Letzter Beitrag: 13-11-14, 13:56
-
By Norbertf in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 14-10-14, 21:32
-
By hansr in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 28-11-02, 17:38
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