我試圖調用一個返回XMLType數據的Oracle存儲過程,但我收到的是一個'沒有數據發現異常'。表中有數據。我已經檢查過,然後再次檢查。 我的代碼中存在調用存儲過程的錯誤。也許一些明顯的事情,我完全失蹤了。調用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;
編輯:忽略名稱的差異。我不得不編輯它們在這裏發佈。
什麼是mktadmin.test_package.test的代碼?克勞斯是正確的,通常是選擇一個不返回行的變量。 – tbone 2011-02-14 18:18:05