'C# how to call an as 400 stored procedure using oledb

Hi I am trying to call an as400 stored procedure using OleDB. Could you please post an example of how to do it cause I've been following some tutorials but not matter what I do I always get an Invalid Token Exception this is what I do

        OleDbCommand sp = new OleDbCommand("CALL NASVARWG.SP001(?,?,?,?,?) ", connectionDB);
            sp.CommandType = CommandType.StoredProcedure;
            sp.Parameters.Add("P1", System.Data.OleDb.OleDbType.Char).Value = "ESANASTRIS";
            sp.Parameters["P1"].Size = 10;
            sp.Parameters["P1"].Direction = ParameterDirection.Input;

            sp.Parameters.Add("P2", System.Data.OleDb.OleDbType.Char).Value = "SAMNAS";
            sp.Parameters["P2"].Size = 10;
            sp.Parameters["P2"].Direction = ParameterDirection.Input;

            sp.Parameters.Add("P3", System.Data.OleDb.OleDbType.Char).Value = textBox_Reparto.Text;
            sp.Parameters["P3"].Size = 6;
            sp.Parameters["P3"].Direction = ParameterDirection.Input;

            sp.Parameters.Add("P4", System.Data.OleDb.OleDbType.Char).Value = "we can do this";
            sp.Parameters["P4"].Size = 60;
            sp.Parameters["P4"].Direction = ParameterDirection.Input;

            sp.Parameters.Add("P5", System.Data.OleDb.OleDbType.Char).Value = "help";
            sp.Parameters["P5"].Size = 256;
            sp.Parameters["P5"].Direction = ParameterDirection.Input;

            sp.Prepare();
            sp.ExecuteNonQuery();

the exception I get says "NASVARWG" is not a valid token. Why? that is the name of the library containing the procedure and the spelling is correct.

Thanks for your help



Solution 1:[1]

A C# code with CommandType.StoredProcedure example :

// assume a DB2Connection conn
DB2Transaction trans = conn.BeginTransaction();
DB2Command cmd = conn.CreateCommand();
String procName = "INOUT_PARAM";
cmd.Transaction = trans;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procName;

A C# code with CommandType.Text example :

// assume a DB2Connection conn
DB2Transaction trans = conn.BeginTransaction();
DB2Command cmd = conn.CreateCommand();
String procName = "INOUT_PARAM";
String procCall = "CALL INOUT_PARAM (@param1, @param2, @param3)";
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;
cmd.CommandText = procCall;

// Register input-output and output parameters for the DB2Command
cmd.Parameters.Add( new DB2Parameter("@param1", "Value1");
cmd.Parameters.Add( new DB2Parameter("@param2", "Value2");
DB2Parameter param3 = new DB2Parameter("@param3", IfxType.Integer);
param3.Direction = ParameterDirection.Output;
cmd.Parameters.Add( param3 );

// Call the stored procedure
Console.WriteLine("  Call stored procedure named " + procName);
cmd.ExecuteNonQuery();
    // Register input-output and output parameters for the DB2Command
    ...

    // Call the stored procedure
    Console.WriteLine("  Call stored procedure named " + procName);
    cmd.ExecuteNonQuery();

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Syafiqur__