繁体   English   中英

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

[英]C# how to call an as 400 stored procedure using oledb

嗨,我正在尝试使用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”不是有效的令牌。 为什么? 这是包含该过程的库的名称,并且拼写正确。

谢谢你的帮助

带有CommandType.StoredProcedure示例的AC#代码:

// 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的AC#代码示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM