PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → 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) ...
Started by Fabien, Oct., 05 2017 2:49 PM - 4 replies
Posted on October, 05 2017 - 2:49 PM
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
Registered member
5 messages
Posted on November, 22 2017 - 10:30 AM
salam alikoum

SVP Avez vous réglé votre problème puisque j ai le méme que vous
Posted on November, 23 2017 - 1:44 PM
Bonjour,
Hélas non ...

Cdlt.
Posted on February, 09 2018 - 11:53 AM
'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
Posted on February, 20 2018 - 3:00 PM
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();