[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2002
    Beiträge
    116

    Stored Procedures unter V5R4

    Wir arbeiten mit Stored Procedures, die wir über den JT400-JDBC-Treiber aufrufen, Jetzt, auf V5R4 kommen einige StoProcs mit "High-order nibble of the byte at array offset 722 is not valid." zurück. Wir haben das Problem etwas isoliert, der Fehler kommt aus den Result-Sets. Ist aber für mich nicht nachvollziehbar.

    Die StoProc ist banal:

    CREATE PROCEDURE TESTPGM/STOTEST
    (IN HDNR NUMERIC(6, 0),
    IN FILIAL NUMERIC(4, 0))
    RESULT SETS 1
    LANGUAGE RPGLE
    SPECIFIC TESTPGM/STOTEST
    NOT DETERMINISTIC
    CALLED ON NULL INPUT
    EXTERNAL NAME 'TESTPGM/EXETEST'
    PARAMETER STYLE GENERAL;
    COMMENT ON SPECIFIC PROCEDURE TESTPGM/STOTEST
    IS 'Testen StoProcs V5R4'


    Das Programm auch:

    FONT="Fixedsys"]HDEBUG(*INPUT : *DUMP : *XMLSAX) DFTACTGRP(*NO) ACTGRP(*CALLER)
    FHDSTAM IF E K DISK
    DXHDSTAM E DS occurs(1)
    DXHDNR S 6S 0
    DXFILIAL S 4S 0
    C *ENTRY plist
    C parm XHDNR
    C parm XFILIAL
    C*
    C key_hd klist
    C kfld XHDNR
    C kfld XFILIAL
    C key_hd chain HDSTAMF
    C if %found
    C 1 occur XHDSTAM
    C/exec sql
    C+ set result sets array :XHDSTAM for 1 rows
    C/end-exec
    C else
    C/exec sql
    C+ set result sets none
    C/end-exec
    C end
    C DUMP(A)
    C RETURN
    C SETON LR [/FONT]

    Je nachdem, ob ich jetzt in meiner Datenstruktur (LF) ein Feld mehr oder weniger habe, kommt der Fehler oder nicht. Das nächste Feld geht aber wieder usw.

    ???????

    Gruß

    Peter

  2. #2
    Registriert seit
    May 2002
    Beiträge
    116
    Das Programm nochmal lesbar:

    HDEBUG(*INPUT : *DUMP : *XMLSAX) DFTACTGRP(*NO) ACTGRP(*CALLER)
    FHDSTAM IF E K DISK
    DXHDSTAM E DS occurs(1)
    DXHDNR S 6S 0
    DXFILIAL S 4S 0
    C *ENTRY plist
    C parm XHDNR
    C parm XFILIAL
    C*
    C key_hd klist
    C kfld XHDNR
    C kfld XFILIAL
    C key_hd chain HDSTAMF
    C if %found
    C 1 occur XHDSTAM
    C/exec sql
    C+ set result sets array :XHDSTAM for 1 rows
    C/end-exec
    C else
    C/exec sql
    C+ set result sets none
    C/end-exec
    C end
    C DUMP(A)
    C RETURN
    C SETON LR

  3. #3
    Registriert seit
    May 2002
    Beiträge
    116
    immer noch nicht lesbar ?

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    warum eigentlich dieser Wackelhaufen?, das geht doch per simplem SQL ohne stoPro, oder übersehe ich da was???

    mfg

    Dieter Bender,
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Naja, den "Fetch 1 rows only" gibts wohl erst seit V5R2 oder so.
    Ein Chain mit verkürztem Key liefert den 1. Satz und das ging mit SQL bisher nicht.
    Wenn man dann auch noch kompatibel zu früher bleiben will (V4) bleibt wohl nur die Prozedur.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    May 2002
    Beiträge
    116
    Das ist jetzt Philisophie, wir waren bisher jedenfalls sehr zufrieden mit Stored Procedures und JT400. Sehr stabil sehr schnell und der Effekt, Web-Server callt eine Stored-Procedure, diese wickelt die Transaktion ab, prüft, schreibt fort usw. liefert uns pro Tabelle genau einen Einstiegspunkt.

    Jetzt aber nochmal zum Problem. Ich lese mit irgendwas eine Datei und gebe den gesamten Satz als Result Set zurück. Bei irgendeinem Feld hängt SQL dann und liefert das High-order nibble (s.o.). Das kann aber nicht an diesem einen Feld hängen, nehme ich ein paar andere raus, läuft dieses eine Feld problemlos. Auch ein Dump auf das Result-Set zeigt nur gültige Daten.

    Ist das in V5R4 in den Datenbanken, beim Erstellen von Dateien irgendetwas neu, zu beachten.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Könnte ggf. auf ein CCSID-Problem hindeuten ?

    Warum CALLED ON NULL INPUT wenn kein NULL-Anzeiger verwendet wird (PARAMETER STYLE GENERAL ggf. WITH NULLS):

    CALLED ON NULL INPUT
    Specifies that the procedure is to be invoked, if any, or all, argument values are null, making the procedure responsible for testing for null argument values. The procedure can return a null or nonnull value.

    Ggf. ist hier V5R4 restriktiver beim Aufruf mit NULL ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    May 2002
    Beiträge
    116
    Die Lösung lag mal wieder ganz woanders.
    Das Programm, das das Result-Set zurückgibt, muß mit CRTSQLRPG ... DATFMT(*ISO) umgewandelt werden, dann läufts.
    Danke trotzdem.
    Peter

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Das kannst du auch in die H-Bestimmung setzen, dann wirds nicht vergessen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Hallo,

    Das kannst du auch in die H-Bestimmung setzen, dann wirds nicht vergessen
    Was in den H-Bestimmungen oder D-Bestimmungen (in diesem Fall das Datums-Format) steht interessiert den Precompiler nicht!
    Um das Datums-Format für Host-Variablen zu setzen, gibt es 2 Möglichkeiten:
    1. Wie bereits ausgeführt im Compile-Command
    2. Über eine SET-OPTION-Anweisung. Bei Release V5R4 muss allerdings beachtet werden, dass die SET OPTION-Anweisung in der Quelle VOR allen anderen SQL-Anweisungen stehen muss. (Anderenfalls gibt es einen Compile-Fehler mit Fehlerstufe 30! Vor Release V5R4 wurde die Reihefolge nicht geprüft)


    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. tools von malume unter V5R4 lauffähig?
    By karin-vogelmann in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-01-07, 09:31
  2. Berechtigung für Stored Procedure
    By rebe in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 12-10-06, 11:22
  3. DTAQs vs. Stored Procedures
    By us400 in forum NEWSboard Java
    Antworten: 6
    Letzter Beitrag: 21-01-06, 09:46
  4. V5R3: SQL Stored Procedures
    By Atomik in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 15-02-05, 13:53
  5. Wer hat Erfahrung mit Stored Procedures + AS/400?
    By KB in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-04-01, 15:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •