Problème execution procédure stocké sur DB2

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Problème execution procédure stocké sur DB2

Messagepar MaachaArbi » 13 Déc 2010 à 11:29

Bonjour à tous,
je n'arrive pas à exécuter une procédure stocké sur DB2 / AS400.

je viens de tester ce tuto:
http://www.ibm.com/developerworks/lotus/library/DB2-procedures/
j'arrive à faire fonnctionner la 1ere procédure stocké sans paramètres IN.
A partir de la deuxième, et lorsqu'il s'agit de paramètre d'entrées j'ai le message suivant sur la console :
Agent message: Error: Nombre d'arguments pour fonction NULLIF incorrect., Connector 'db2', Method -Call- (-170)

le code de mon agent est le suivant :

Code : Tout sélectionner
Dim session As New NotesSession   
   Dim session2 As New LCSession 
   Set db = session.currentdatabase   
   Set doc = session.documentContext
   
   On Error Goto errorhandler   
   
   Dim conn As New LCConnection("db2")      
   Dim input_parameters As New LCFieldList 
   Dim result_set As New LCFieldList   
   Dim empid As New LCField (LCTYPE_INT)
   Dim count As Double
   
   conn.database = DATABASENAME   
   conn.userid = USERID
   conn.password = USERPWD
   conn.procedure = BIB.PROC         
   conn.Connect   
      
   Set empid = input_parameters.Append("ID",LCTYPE_INT)         
   empid.Value = 0
   
   count = conn.call(input_parameters,1,result_set)   
   
   While conn.Fetch(result_set)>0
      Msgbox result_set.FNAME(0)
      Msgbox result_set.LNAME(0)
      doc.testname=result_set.FNAME(0)
   Wend
   Exit Sub      
   
errorhandler:
   Msgbox "Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Dim Msg As String
   Dim Msgcode As Long
   Dim status As Integer
   Dim result As String
   
   If session2.status >< LCSUCCESS Then
'Turn the error info into a string
   status = session2.GetStatus(result,Msgcode,Msg)      
   End If
'Display error text
   Msgbox result
End Sub

je n'ai trouvé ni documentation ni rien et même le support IBM n'as rien pu pour moi.
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar amahi » 13 Déc 2010 à 11:41

Bonjour,

Tu pourrais nous donner ta procedure "BIB.PROC", c'est la qu'est le soucis.
@Novaliance
amahi
Empereur des posts
Empereur des posts
 
Message(s) : 1032
Inscrit(e) le : 08 Jan 2007 à 16:57
Localisation : Region parisienne

Messagepar MaachaArbi » 13 Déc 2010 à 11:57

Ceci est la procédure que j'appel:


Code : Tout sélectionner
CREATE PROCEDURE BIB/PROC (IN EMPID INT)
LANGUAGE SQL
P1: BEGIN
DECLARE EMPID_VAL INT;
SET EMPID_VAL = EMPID;     
SELECT FNAME, LNAME FROM BIB/PROC   
WHERE EMPID = EMPID_VAL;
END P1


Ce que je ne comprend pas c'est que la procédure qui va suivre fonctionne:
CREATE PROCEDURE BIB/PROC ()
LANGUAGE SQL
P1: BEGIN
SELECT FNAME, LNAME FROM BIB/PROC;
END P1
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar amahi » 13 Déc 2010 à 13:00

Tu as essayez avec un ID en dur (avec un user existant) dans ta requete ?
@Novaliance
amahi
Empereur des posts
Empereur des posts
 
Message(s) : 1032
Inscrit(e) le : 08 Jan 2007 à 16:57
Localisation : Region parisienne

Messagepar MaachaArbi » 13 Déc 2010 à 14:29

Avec un ID en dur dans la procedure ça fonctionne pourvue que je ne mette pas de paramètre:
ceci est le code de la procedure:

Code : Tout sélectionner
CREATE PROCEDURE DCàDEVDTA/GET_EMP ( )
RESULT SETS 1
LANGUAGE SQL
P1: BEGIN
DECLARE cursor1 CURSOR WITH RETURN FOR     
SELECT FNAME,LNAME FROM DCàDEVDTA/EMPLOYEES 
WHERE EMPID =1; 
OPEN cursor1;       
END P1


et voici selui de mon agent:
Code : Tout sélectionner
Sub Initialize
   On Error Goto errorhandler         
   Dim session As New LCSession       
   Dim conn As New LCConnection("db2")
   
   conn.database = "BTSGBD"
   conn.userid = "qsysopr"           
   conn.password = "qsysopr"
   conn.procedure = "DCàDEVDTA.GET_EMP"   
   conn.Connect   
   
   Dim input_parameters As New LCFieldList   
   Dim output_parameters As New LCFieldList   
   Dim empid As LCField   
   Dim count As Integer
   Dim fname As LCField   
   Dim lname As LCField   
   
   Set empid = input_parameters.Append("EMPID",LCTYPE_INT)      
   empid.Value = 1   
   
   count = conn.call(Nothing,1,output_parameters) 
   For i=1 To output_parameters.RecordCount
      Call conn.Fetch(output_parameters)      
      Msgbox output_parameters.FNAME(0)
      Msgbox output_parameters.LNAME(0)
   Next
   Exit Sub      
   
errorhandler:
   Msgbox "Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
End Sub


et voici de nouveau la procédure qui n'as pas fonctionné:

Code : Tout sélectionner
CREATE PROCEDURE DCàDEVDTA/GET_EMP (IN EMPID INT)
RESULT SETS 1
LANGUAGE SQL
P1: BEGIN
DECLARE EMPID_VAL INT;
DECLARE cursor1 CURSOR WITH RETURN FOR     
SELECT FNAME,LNAME FROM DCàDEVDTA/EMPLOYEES 
WHERE EMPID = EMPID_VAL; 
SET EMPID_VAL = EMPID;     
OPEN cursor1;       
END P1


quand à l'agent j'ai juste changé la ligne suivante:

Code : Tout sélectionner
count = conn.call(Nothing,1,output_parameters) 

par celle là :
Code : Tout sélectionner
count = conn.call(input_parameters,1,output_parameters) 


et la fameuse erreur apparait.

SVP j'arrive pas à comprendre.
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar Michael DELIQUE » 13 Déc 2010 à 14:41

salut

je dirais que input_parameters n'est pas dans le bon format
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar MaachaArbi » 13 Déc 2010 à 14:55

Je vous remercie tous,
Mais j'arrive toujours pas à résoudre le problème.
J'ai essayer de changer le format du input_parameters en "LCTYPE_TEXT" ainsi que dans la procédure mais toujours le même problème.

ce qui est bizarre c'est que si je modifie la ligne suivante:
Code : Tout sélectionner
conn.procedure = "DCàDEVDTA.GET_EMP"   

et je met un nom de procédure qui n'existe pas, j'ai toujours le même message d'erreur, donc le system n'as même pas aller vérifier la procédure si elle existe ou pas ou bien si les paramètres sont bons ou pas.
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar MaachaArbi » 14 Déc 2010 à 09:21

S'il vous plais , il y a quelqu'un ???
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar amahi » 14 Déc 2010 à 11:00

La premiere chose qui me choque c'est de voir des caractères accentué. Je ne dit pas que c'est de la que vient le problème mais c'est etre joueur que d'en mettre.
Si ton id est ID est 1 essaye avec SMALLINT
@Novaliance
amahi
Empereur des posts
Empereur des posts
 
Message(s) : 1032
Inscrit(e) le : 08 Jan 2007 à 16:57
Localisation : Region parisienne

Messagepar MaachaArbi » 14 Déc 2010 à 11:21

Même chose avec un SMALLINT :cry:
Si quelqu'un peut me filer une procédure et un agent qui fonctionne dans sont environnement pour que je le test dans le mien SVP. :cry:
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar MaachaArbi » 16 Déc 2010 à 09:08

Allo :( :( :( :(
il y a quelqu'un .
MaachaArbi
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 7
Inscrit(e) le : 13 Déc 2010 à 10:55

Messagepar Michael DELIQUE » 16 Déc 2010 à 09:13

re,

regarde si ça t'aiderais pas => http://www.bleedyellow.com/blogs/askthe ... re?lang=sv
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers Développement