-
Uhh Birgitta, vielen Dank. Ich habe was ähnliches bereits im Internet an anderer Stelle gefunden aber das hat nicht so funktioniert. Ich probiere deines morgen gleich aus.
-
Hier habe ich sogar noch einen Link zu einem Artikel in Deutsch! gefunden:
Release 7.1 – Verarbeiten von Result Sets mit embedded SQL
Birgitta
-
@Birgitta Was ist der SpecificProcedureName
Ich denke dass ist der normale StoredProcedure Name
-
Ich habe alles soweit gemacht. Bekomme aber jetzt den SQLCOD -501.
Im Joblog sagt er dass er die Datei (sehr langer Name) nicht findet.
Über WRKOBJ sehe ich nur die 10-stelligen Systemnamen. Kann es sein dass ich irgendwo noch was angeben muss und das der lange Name eventuell das Problem ist ?
-
Da Prozeduren überladen werden können, d.h. die gleiche Prozedur (bzw. gleicher Prozedur-Name) jedoch mit einer unterschiedlichen Anzahl von Parametern kann in der gleichen Bibliothek mehrfach vorhanden sein. Um an dieser Stelle auch die richtige Prozedur aufzurufen verwendet man den spezifischen (eindeutigen) Namen der Prozedur, alternativ kann man and dieser Stelle aber auch die Parameter-Definition angeben.
Wenn es nur eine einzige Stored Procedure (mit dem gleichen Namen) gibt, kannst Du an dieser Stelle auch den Namen der Stored Procedure angeben.
SQL-Code -501 bedeutet, dass der Cursor nicht geöffnet ist.
Wenn Du die Stored Procedure aus ACS (Access Client Solutions) - Run SQL Skript (oder auch mit Client Access) mit dem SQL-Befehl CALL aufrufst, bekommst Du dann eine Ergebnis-Tabelle angezeigt oder erhältst Du eine Fehlermeldung?
Wo genau (nach welchem Statement) erhälst Du den SQLCODE -501?
Um ein Result-Set auszugeben, muss der entsprechende Cursor in der Stored Procedure geöffnet werden und darf vor Ende der Prozedur nicht mehr geschlossen werden. (Das machst Du nämlich dann in Deinem Verarbeitungs-Programm).
Ich vermute der Programmierer hat entweder nur den Cursor definiert (darauf können wir nicht zugreifen) und nicht geöffnet (dann können wir das Result-Set verarbeiten).
Oder er hat den Cursor geöffnet, aber sicherheitshalber vor dem Ende der Prozedur wieder geschlossen.
Im übrigen solltest Du mit ACS (Access Client Solutions) Datenbank - Schemas und/oder Run SQL Script arbeiten. Mit ACS Schemas kannst Du Dir alle Datenbanken-Objekte anschauen, hier siehst Du auch die langen System und kurzen SQL-Namen.
Mit Run-SQL Script (ich hab' nur die Englische Version) führst Du SQL-Statements aus. Bei der aktuellen Version gibt es keine Ausrede mehr, warum STRSQL (das bereits seit Release V4R5 stabilisiert ist) verwendet werden sollte.
Birgitta
-
Mittels DSPFD kann man auch den Alias-Namen sehen.
-
Ich glaube die Datei existiert tatsächlich nicht. Das ist wieder so ein Berechtigungsproblem ... vielleicht. Ich weiß nicht warum die das so kompliziert machen müssen. Um nicht viele Prozeduren machen zu müssen habe die eine Prozedur gemacht die aus einer Datei das SQL Statement holt und dieses dann ausführt und das Ergebnis zurück gibt. Somit sind fast alle Felder auch varchar(250). Ich weiß das hat mit meinem Problem nichts zu tun, macht es aber nicht einfacher.
Er bringt beim CALL auf der AS400 direkt dass er die Datei nicht findet.
-
Welchen CALL meinst du denn?
Hast du Birgittas Vorschlag mal angenommen und den Call auf die Prozedur von ACS oder falls noch nicht installiert mit Operations Navigator durchgeführt?
Kann dir nicht derjenige, der die Prozedur zur Verfügung stellt, ein Beispiel für das Erhalten der Daten bereitstellen?
Auch wenn es ungern gesehen wird:
Klappt der Aufruf mit STRSQL und du siehst Daten?
Wenn Ja, dann gibts noch die Umgehung mit QMQRY.
Da kannst du die Daten der Prozedur in eine Datei ausgeben und dann verarzten.
Das tut zwar manchen in den Augen weh, mag aber funktionieren.
-
Aktuell funktioniert es soweit dass ich was zurück bekomme. Probleme machen noch die Null-Felder ich muss noch die Null-Felder-Variablen empfangen.
Mit Einzelfelder hatte ich da bisher keine Probleme jetzt bekomme ich aber eine DS zurück
d DsWR ds
d Row_Key 250
d Commission_Number...
d 250
d Commission_Number_Year...
d 250
d Vin 250
d Invoice_Number...
d 250
Wie muss ich die Null-Variablen definieren ?
als eigene DS mit je einem Null-Feld je Feld oder muss ich die einzelenen Nullfelder in die gleiche DS hinter die Felder machen ?
-
Du must eine Datenstruktur definieren mit sovielen Elementen wie Spalten und diese Feldgruppe dann nach der Datenstruktur getrennt durch ein Blank angeben.
Birgitta
-
Ich habs gefunden. Es funktioniert jetzt alles.
Für alle die es interessiert. Nachfolgend meine Quellenzusammenfassung
Code:
d rsWR s sqltype(result_set_locator)
d DsWR ds
d Row_Key 250
d Commission_Number...
d 250
d Commission_Number_Year...
d 250
d Vin 250
d Invoice_Number...
d 250
d Invoice_Date...
d 250
d Amount 250
d Currency 250
d Invoicing_Dealer...
d 250
d Sales_Category...
d 250
d CDC_Valid_From...
d 9 0
d CDC_DelFrom...
d 9 0
d myNulls s 5i 0 dim(12)
***************************************************************************
** Hauptprogramm
***************************************************************************
c/exec sql
c+ call EXP.P_REQUEST_SST('NCONS', 'XXX', 'VERSAND',
c+ 0, 0, '', 0, 0)
c/end-exec
c/exec sql
c+ ASSOCIATE RESULT SET LOCATOR(:rsWR) with specific procedure
c+ P_REQUEST_SST
c/end-exec
c/exec sql
c+ ALLOCATE cWR CURSOR FOR RESULT SET :rsWR
c/end-exec
c do *hival
c/exec sql
c+ FETCH NEXT FROM cWR into :DsWR:myNulls
c/end-exec
c if SqlCod = 100 or SqlCod < *zeros
c leave
c endif
**
c enddo
c/exec sql
c+ CLOSE cWR
c/end-exec
**
c eval *inlr = *on
An die Prozedur selbst komme ich leider nicht ran. Aber so wie oben funktioniert es im RPG
-
Vielen Dank an alle für die Unterstützung
Similar Threads
-
By Dschainers in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 28-08-19, 11:09
-
By Tschabo in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 23-10-16, 19:12
-
By svit in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 03-03-16, 11:11
-
By sargejogi in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 22-09-15, 12:09
-
By Etherion in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 30-09-14, 13:36
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