C# 调用Oracle存储过程。获得';未找到任何数据';例外情况

C# 调用Oracle存储过程。获得';未找到任何数据';例外情况,c#,oracle,stored-procedures,C#,Oracle,Stored Procedures,我试图调用一个返回XMLType数据的Oracle存储过程,但收到的只是一个“找不到数据异常”。表中有数据。我查过了,然后又查了一遍。 调用存储过程的代码中是否有错误。也许是显而易见的,我完全不知道 using (OracleConnection dbc = new OracleConnection("Data Source=test; User ID=user; Password=pwd")) { dbc.Open(); using (DbTransaction trans = d

我试图调用一个返回XMLType数据的Oracle存储过程,但收到的只是一个“找不到数据异常”。表中有数据。我查过了,然后又查了一遍。 调用存储过程的代码中是否有错误。也许是显而易见的,我完全不知道

using (OracleConnection dbc = new OracleConnection("Data Source=test; User ID=user; Password=pwd"))
{
   dbc.Open();
   using (DbTransaction trans = dbc.BeginTransaction())
   {
      try
      {
         DbCommand comm = dbc.CreateCommand();
         comm.CommandType = CommandType.StoredProcedure;
         comm.CommandText = "TestStoredProcedure";
         comm.Transaction = trans;

         OracleParameter returnParam = new OracleParameter("result", OracleDbType.XmlType);
         returnParam.Direction = ParameterDirection.ReturnValue;
         comm.Parameters.Add(returnParam);

         OracleParameter param1 = new OracleParameter("param1", OracleDbType.Varchar2);
         param1.Direction = ParameterDirection.Input;
         param1.Size = 70;
         param1.Value = "testing";
         comm.Parameters.Add(param1);

         OracleParameter param2 = new OracleParameter("param2", OracleDbType.Varchar2);
         param1.Direction = ParameterDirection.Input;
         param1.Size = 70;
         param1.Value = "testing";
         comm.Parameters.Add(param2);

         OracleParameter param3 = new OracleParameter("param3", OracleDbType.Date);
         param1.Direction = ParameterDirection.Input;
         param1.Value = Convert.ToDateTime("1/18/2011 12:00:00 AM");
         comm.Parameters.Add(param3);

         comm.ExecuteNonQuery(); //exception at this line

         OracleXmlType oracleXml = (OracleXmlType)comm.Parameters["result"].Value;
         XmlDocument xmlDoc = oracleXml.GetXmlDocument();
      }
      catch (Exception ex)
      {
          Console.WriteLine(ex.ToString());
      }
   }
}
存储过程:

declare
  -- Non-scalar parameters require additional processing 
  result sys.xmltype;
begin
  -- Call the function
  result := mktadmin.test_package.test(param1 => :testval1,
                                       param2 => :testval2,
                                       param3 => :testval3);
end;

编辑:忽略名称中的任何差异。我必须编辑它们才能在这里发布。

查看存储过程会很有用。在执行不产生任何结果的
选择时,通常会出现
未找到数据
错误。

看起来您正在覆盖param2和param3部分分配中的param1属性。

mktadmin.test\u package.test的代码是什么?Klaus是正确的,通常是一个select到一个不返回行的变量中。是的,你是对的。我真不敢相信这就是我做错的地方。谢谢,不客气。最简单的事情总是最难看到的。