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

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

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

  1. OleDbCommand sp = new OleDbCommand("CALL NASVARWG.SP001(?,?,?,?,?) ", connectionDB);
  2. sp.CommandType = CommandType.StoredProcedure;
  3. sp.Parameters.Add("P1", System.Data.OleDb.OleDbType.Char).Value = "ESANASTRIS";
  4. sp.Parameters["P1"].Size = 10;
  5. sp.Parameters["P1"].Direction = ParameterDirection.Input;
  6. sp.Parameters.Add("P2", System.Data.OleDb.OleDbType.Char).Value = "SAMNAS";
  7. sp.Parameters["P2"].Size = 10;
  8. sp.Parameters["P2"].Direction = ParameterDirection.Input;
  9. sp.Parameters.Add("P3", System.Data.OleDb.OleDbType.Char).Value = textBox_Reparto.Text;
  10. sp.Parameters["P3"].Size = 6;
  11. sp.Parameters["P3"].Direction = ParameterDirection.Input;
  12. sp.Parameters.Add("P4", System.Data.OleDb.OleDbType.Char).Value = "we can do this";
  13. sp.Parameters["P4"].Size = 60;
  14. sp.Parameters["P4"].Direction = ParameterDirection.Input;
  15. sp.Parameters.Add("P5", System.Data.OleDb.OleDbType.Char).Value = "help";
  16. sp.Parameters["P5"].Size = 256;
  17. sp.Parameters["P5"].Direction = ParameterDirection.Input;
  18. sp.Prepare();
  19. sp.ExecuteNonQuery();

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

ff29svar

ff29svar1#

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

  1. // assume a DB2Connection conn
  2. DB2Transaction trans = conn.BeginTransaction();
  3. DB2Command cmd = conn.CreateCommand();
  4. String procName = "INOUT_PARAM";
  5. cmd.Transaction = trans;
  6. cmd.CommandType = CommandType.StoredProcedure;
  7. cmd.CommandText = procName;

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

  1. // assume a DB2Connection conn
  2. DB2Transaction trans = conn.BeginTransaction();
  3. DB2Command cmd = conn.CreateCommand();
  4. String procName = "INOUT_PARAM";
  5. String procCall = "CALL INOUT_PARAM (@param1, @param2, @param3)";
  6. cmd.Transaction = trans;
  7. cmd.CommandType = CommandType.Text;
  8. cmd.CommandText = procCall;
  9. // Register input-output and output parameters for the DB2Command
  10. cmd.Parameters.Add( new DB2Parameter("@param1", "Value1");
  11. cmd.Parameters.Add( new DB2Parameter("@param2", "Value2");
  12. DB2Parameter param3 = new DB2Parameter("@param3", IfxType.Integer);
  13. param3.Direction = ParameterDirection.Output;
  14. cmd.Parameters.Add( param3 );
  15. // Call the stored procedure
  16. Console.WriteLine(" Call stored procedure named " + procName);
  17. cmd.ExecuteNonQuery();
  18. // Register input-output and output parameters for the DB2Command
  19. ...
  20. // Call the stored procedure
  21. Console.WriteLine(" Call stored procedure named " + procName);
  22. cmd.ExecuteNonQuery();
展开查看全部

相关问题