我正在尝试使用来自.Net的anyData
参数调用存储过程但是由于参数我得到错误:
ORA-06550:第1行第7列: PLS-00306:调用'SP_SE_TEST'时参数的数量或类型错误 ORA-06550:第1行第7列: PL / SQL:忽略语句
如果我将过程中的参数更改为varchar2可以正常工作,但不能使用AnyData。
我有这个程序:
Procedure Sp_Se_Test(v_Param In anydata,
v_out_result Out Sys_Refcursor);
和来自.net的电话:
using (var cw = new OracleCommand{ Connection = db, CommandType = System.Data.CommandType.StoredProcedure,
CommandText = "PackageName.Sp_Se_Test"
})
{
cw.Parameters.Add(new OracleParameter { ParameterName = "v_Param", OracleDbType = OracleDbType.Varchar2 , Value = "Testing" });
cw.Parameters.Add("v_out_result", OracleDbType.RefCursor,ParameterDirection.Output);
db.Open();
using (var dr = cw.ExecuteReader())
{
while (dr.Read())
{
var res = dr["Result"];
}
dr.Close();
}
}
我认为这是由OracleDbType引起的,但我不知道AnyData的类型是什么。
有人知道怎么做吗?
提前致谢
答案 0 :(得分:1)
ODP.NET不支持PL / SQL ANYDATA数据类型。 (它不能从ODP.NET绑定)。您需要使用受支持的类型重写该过程,或者使用一个使用PL / SQL将该类型转换为支持的类型的新SP包装SP。