PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Appel d'une procédure stockée sur AS400 (avec paramétres en retour) ...
Appel d'une procédure stockée sur AS400 (avec paramétres en retour) ...
Débuté par Fabien, 05 oct. 2017 14:49 - 4 réponses
Posté le 05 octobre 2017 - 14:49
Bonjour,

Je souhaiterai appeler une procédure stockée sur un AS400.
Cette procédure accepte 2 paramètres en entrée et retourne 1 paramètre en sortie.
La procédure est fonctionnelle. Je l'ai testée sous Visual Studio via le provider IBM DB2.net (code VB.net).
Par contre sous Windev je n'y arrive pas. J'utilise SQLExec mais en vain. Ma syntaxe n'est certainement pas bonne (pas trop d'exemples sur internet) ...

Quelqu'un à t-il déjà réussi ce genre d'opérations (sans l’accès natif, bien sûr) ?
J'ai même importé l'assemblage que j'ai utilisé avec Visual Studio mais rien à faire. La façon de travailler avec les objets
n'est pas naturelle en Windev (à mon goût) ...

Merci de votre retour

Cordialement.
Fabien
Membre enregistré
5 messages
Posté le 22 novembre 2017 - 10:30
salam alikoum

SVP Avez vous réglé votre problème puisque j ai le méme que vous
Posté le 23 novembre 2017 - 13:44
Bonjour,
Hélas non ...

Cdlt.
Posté le 09 février 2018 - 11:53
'CREATE PROCEDURE' sous l'environnement SQL de l'AS400

Intégrer dans le projet le .net 'system' de Windows et IBM.DB2..... (classes fournies par client access d'IBM)

Cdlt
Posté le 20 février 2018 - 15:00
Un exemple en VB si cela peut vous aider.
La procédure stockée accepte 1 parametre en entrée et 2 en sortie

intégrer systeme.data et ibm.idb2.... dans le projet



// Create and open a connection to the iSeries.
iDB2Connection cn = new iDB2Connection("DataSource=myiSeries;")

cn.Open() //

// Setup the command to call the stored procedure EMPINFO.
iDB2Command cmd = new iDB2Command("sampledb.empinfo", cn)

cmd.CommandType = System.Data.CommandType.StoredProcedure

// Create the parameter definitions.

cmd.Parameters.Add("@employeeId", iDB2DbType.iDB2Char, 6);
cmd.Parameters["@employeeId"].Direction = System.Data.ParameterDirection.Input;
cmd.Parameters.Add("@firstname", iDB2DbType.iDB2VarChar, 12)

cmd.Parameters["@firstname"].Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add("@lastname", iDB2DbType.iDB2VarChar, 15);
cmd.Parameters["@lastname"].Direction = System.Data.ParameterDirection.Output

cmd.Parameters.Add("@current_salary", iDB2DbType.iDB2Decimal);
cmd.Parameters["@current_salary"].Precision = 9;
cmd.Parameters["@current_salary"].Scale = 2;
cmd.Parameters["@current_salary"].Direction = System.Data.ParameterDirection.Output;
// Set the input parameter to one of the employees in the
// SAMPLEDB.EMPLOYEE table. For this example, we hard-code
// the employee id.
cmd.Parameters["@employeeId"].Value = "000180";
// Execute the command. Because the command does not return
// a result set, we use ExecuteNonQuery.
cmd.ExecuteNonQuery();
// Now, print out the employee first name, last name,
// and current salary.
Console.WriteLine("{0} {1}'s current salary: {2}",
cmd.Parameters["@firstname"].Value,
cmd.Parameters["@lastname"].Value,
cmd.Parameters["@current_salary"].Value.ToString());
// The return value from our sample stored procedure is the
// recommended salary increase. Display that now.
Console.WriteLine("Recommended salary increase: " +
cmd.Parameters["@rc"].Value.ToString());
// Dispose the command since we no longer need it.
cmd.Dispose();
// Close the connection.
cn.Close();