Autor Thema: LSX LC: DB2 Stored Procedure aufrufen und Ergebnis verarbeiten  (Gelesen 1922 mal)

Offline tge

  • Junior Mitglied
  • **
  • Beiträge: 65
Hallo allerseits!

Ich versuche, über DB2 Connect eine Stored Procedure aufzurufen und den von ihr zurückgegebenen Resultset  weiterzuverarbeiten. Die Stored Procedure kann je nach Vorgabe der Inputparameter sowohl Einzelergebnisse als auch einen Resultset zurückgeben. Die Input-Parameter werden der Stored Procedure korrekt übergeben, sie läuft dann auch fehlerfrei, nur im Output liegt nun offenbar das Problem: Ich finde keinen Weg, an den Resultset heranzukommen, denn die Stored Procedure gibt zunächst die einzelnen Input- und Output-Variablen zurück, bevor der eigentliche Resultset kommt. Das sieht etwa so aus:

PARAMETER1: NULL
PARAMETER2: NULL
PARAMETER3: NULL
PARAMETER4: NULL
PARAMETER5: NULL
PARAMETER6: NULL
PARAMETER7: NULL
PARAMETER8: NULL
PARAMETER9: NULL
PARAMETER10: NULL
PARAMETER11: NULL
PARAMETER12: NULL
PARAMETER13: NULL
PARAMETER14: NULL
PARAMETER15: NULL
PARAMETER16: NULL
PARAMETER17: NULL
PARAMETER18: NULL
PROCCC: 0
PROCEC: 0
PROCMSG:

PARAMETER1  PARAMETER2 PARAMETER3 PARAMETER4 PARAMETER5 PARAMETER6 PARAMETER7 PARAMETER8 PARAMETER9 PARAMETER10 PARAMETER11 PARAMETER12 PARAMETER13 PARAMETER14 PARAMETER15 PARAMETER16 PARAMETER17 PARAMETER18
123456   7045      3                U            330    19940411
      0               5                  0              0                 70
  8             94          0           0                0
123456   7045      2                U            330    19930401
      0               5                  0              19000000          70
  8             93          0           0                0
123456   7045      1                U            330    19920916
      0               5                  0              19000000          70
  8             92          0           0                0

"SPLE7000" RÜCKKEHRSTATUS: "0"


Ich kenne mich in DB2 und den Stored Procedures selber nicht gut aus, habe mir aber sagen lassen, daß bei anderen Stored Procedures, die ebenso Einzelergebnisse und Resultset zurückgeben können, sich der Resultset beispielsweise mit Java so verarbeiten läßt. In Notes ist dies für mich noch ein Novum.

In LotusScript habe ich mich sehr genau an die von IBM im Internet veröffentlichten Beschreibungen und Beispiele zur Nutzung von DB2 Stored Procedures mit LSX LC gehalten. So sieht der Aufruf der Stored Procedure dann aus und führt zum Fehler „Error: Invalid fieldlist,  Connector 'db2',  Method -Fetch-“ in der While-Schleife:

(Die Variablen Fl_OutP_PARAMETER... sind als LCField deklariert.
Die Variable FIL_Lc_InputParameterList ist als LCFieldlist deklariert.
Die Variable st_Datensaetze ist als String deklariert.)

   (…)
   'Stored Procedure ausführen
   Set FIL_Lc_Resultset = New LCFieldList
   'Cursor-Aufruf der Stored Procedure (mit Result Set)
   i_Count = con_DB2.Call(FIL_Lc_InputParameterList, 1, FIL_Lc_Resultset)
            
   'Result Set verarbeiten
   Set Fl_OutP_Cc = FIL_Lc_Resultset.Lookup("PROCCC")
   Set Fl_OutP_Ec = FIL_Lc_Resultset.Lookup("PROCEC")
   Set Fl_OutP_Msg = FIL_Lc_Resultset.Lookup("PROCMSG")
   
   Set Fl_OutP_PARAMETER3 = FIL_Lc_Resultset.Lookup("PARAMETER3")
   Set Fl_OutP_PARAMETER4 = FIL_Lc_Resultset.Lookup("PARAMETER4")
   Set Fl_OutP_PARAMETER5 = FIL_Lc_Resultset.Lookup("PARAMETER5")
   Set Fl_OutP_PARAMETER6 = FIL_Lc_Resultset.Lookup("PARAMETER6")
   Set Fl_OutP_PARAMETER7 = FIL_Lc_Resultset.Lookup("PARAMETER7")
   Set Fl_OutP_PARAMETER8 = FIL_Lc_Resultset.Lookup("PARAMETER8")
   Set Fl_OutP_PARAMETER9 = FIL_Lc_Resultset.Lookup("PARAMETER9")
   Set Fl_OutP_PARAMETER10 = FIL_Lc_Resultset.Lookup("PARAMETER10")
   Set Fl_OutP_PARAMETER11 = FIL_Lc_Resultset.Lookup("PARAMETER11")
   Set Fl_OutP_PARAMETER12 = FIL_Lc_Resultset.Lookup("PARAMETER12")
   Set Fl_OutP_PARAMETER13 = FIL_Lc_Resultset.Lookup("PARAMETER13")
   Set Fl_OutP_PARAMETER14 = FIL_Lc_Resultset.Lookup("PARAMETER14")
   Set Fl_OutP_PARAMETER15 = FIL_Lc_Resultset.Lookup("PARAMETER15")
   Set Fl_OutP_PARAMETER16 = FIL_Lc_Resultset.Lookup("PARAMETER16")
   Set Fl_OutP_PARAMETER17 = FIL_Lc_Resultset.Lookup("PARAMETER17")
   Set Fl_OutP_PARAMETER18 = FIL_Lc_Resultset.Lookup("PARAMETER18")
      
   While (con_DB2.Fetch(FIL_Lc_Resultset))
      
      st_Datensaetze = st_Datensaetze & " Parameter3 = " & Fl_OutP_PARAMETER3.Text(0) & (…)
      
   Wend


Ich hoffe, die Angaben sind ausführlich genug. Über einen Tip, wie ich hier an den Resultset kommen kann und wie die Ursache des Fehlers behoben werden könnte, schon jetzt ein ganz herzliches Dankeschön!

Viele Grüße
Thorsten

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz