db2 C#如何使用oledb调用as 400存储过程

1tuwyuhd  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(146)

你好,我正在尝试使用OleDB调用一个as400存储过程。你能不能发布一个如何做的例子,因为我一直在遵循一些教程,但无论我做什么,我总是得到一个无效令牌异常,这就是我做的

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();

我得到的异常表明“NASVARWG”不是一个有效的标记。2为什么?3这是包含该过程的库的名称,并且拼写正确。
谢谢你的帮助

ff29svar

ff29svar1#

一个用C#代码CommandType.StoredProcedure编写的例子:

// 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;

一个带有CommandType.Text的C#代码示例:

// 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();

相关问题