C# getstoredproccommand(“procedurename”,新对象[1])抛出';System.AccessViolationException';在Microsoft.Practices.EnterpriseLibrary.Data.dll中

C# getstoredproccommand(“procedurename”,新对象[1])抛出';System.AccessViolationException';在Microsoft.Practices.EnterpriseLibrary.Data.dll中,c#,.net,dll,oracle11g,C#,.net,Dll,Oracle11g,我在这一行出现错误DbCommand objComm=db.GetStoredProcCommand(“package name.procedurename”,new object[1]) 如果我这样做 PROCEDURE PRC_PROCEDURE (resultset_out OUT TYPES.cursorType) AS BEGIN OPEN resultset_out FOR SELECT * FROM PORTALLISTS; END PRC_PORTALLISTS_GETALL;

我在这一行出现错误
DbCommand objComm=db.GetStoredProcCommand(“package name.procedurename”,new object[1])

如果我这样做

PROCEDURE PRC_PROCEDURE (resultset_out OUT TYPES.cursorType)
AS
BEGIN
OPEN resultset_out FOR SELECT * FROM PORTALLISTS;
END PRC_PORTALLISTS_GETALL;

错误消失了,但我在这一行中使用
(IDataReader rdr=db.ExecuteReader(objComm))
遇到了相同的错误
[抛出的异常:Microsoft.Practices.EnterpriseLibrary.Data.dll中的System.AccessViolationException'
。我使用的是.net framework 4和Microsoft.Practices.EnterpriseLibrary.Data.dll版本为5.0.0.0。你们能帮帮我吗?

你们有
结果集
作为out参数,你们可以像下面这样传递你们的参数

DbCommand objComm = db.GetStoredProcCommand("package name.procedurename");

ref

你的命令中的新对象[1]
是什么我不知道。。我对string Listtype有相同的方法。该方法代码类似于以下公共静态列表GetAll(string listType){Database db=DatabaseFactory.CreateDatabase();DbCommand objComm=db.GetStoredProcCommand(“包名.procedurename”,新对象[1],listType”);var result=new List();using(IDataReader rdr=db.ExecuteReader(objComm))while(rdr.Read()){result.Add(Construct(rdr));}}返回结果;}公共静态列表GetAll(string listType){Database db=DatabaseFactory.CreateDatabase();DbCommand objComm=db.GetStoredProcCommand(“package name.procedurename”,new object[1],listType”);var result=new List();使用(IDataReader rdr=db.ExecuteReader(objComm)){while(rdr.Read()){result.Add(Construct(rdr));}返回结果;}此代码运行正常。您可以通过
AddOutParameter
查看我的答案来传递参数OK。让我这样试试。我有很多以前的开发人员编写的方法,比如DbCommand objComm=db.GetStoredProcCommand(“package name.procedurename”,new object[1]);我在这些方法中遇到了错误,但在这个DbCommand objComm=db.GetStoredProcCommand(“package name.procedurename”,new object[1],listType)中没有遇到任何错误;现在我在使用(IDataReaderRDR=db.ExecuteReader(objComm))的这一行中遇到了相同的错误…有什么建议吗??除了IDataReader之外,我还可以使用其他方法检索数据吗??
DbCommand objComm = db.GetStoredProcCommand("package name.procedurename");
DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand); 
// Output parameters specify the size of the return data.
db.AddOutParameter(dbCommand, "resultset_out", DbType.Object, Int32.MaxValue);