이와 같은 저장 절차가 있습니다
PROCEDURE PRC_ABCD_GETALL (resultset_out OUT TYPES.cursorType)
AS
BEGIN
OPEN
resultset_out FOR SELECT * FROM ABCD;
END PRC_ABCD_GETALL;
이 절차는 패키지에 포함되어 있고 패키지는 다음과 같습니다.
create or replace
PACKAGE V4_EVT_PKG_ABCD_GENERAL
AS
PROCEDURE PRC_ABCD_GETALL (resultset_out OUT TYPES.cursorType);
END V4_EVT_PKG_ABCD_GENERAL;
오라클 데이터 공급자는 system.data.oracleClient이고 이전 코드는 다음과 같습니다.
public static IEnumerable<PortalList> GetAll()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand objComm = db.GetStoredProcCommand("package_name.sp", new
object[1]);
var result = new List<PortalList>();
using (IDataReader rdr = db.ExecuteReader(objComm))
{
while (rdr.Read())
{
result.Add(Construct(rdr));
}
}
return result;
}
이제 system.data.oracleClient가 더 이상 사용되지 않는다는 것을 알았고 Oracle.DataAccess.Client를 데이터 공급자로 사용하고 싶습니다 .C # 코드를 작성했지만 'PRC_ABCD_GETALL에 대한 호출에서 잘못된 번호 또는 인수 유형과 같은 오류가 발생했습니다. '이 함수에서 PortalListRepository.GetAll ();
private static IEnumerable<PortalList> GetAll(bool forceDataReload)
{
const string cacheKey = "PortalListService_GetAll";
IEnumerable<PortalList> result = null;
if (!forceDataReload)
result = GetFromCache(cacheKey);
if (result == null)
{
result = PortalListRepository.GetAll();
AddToCache(cacheKey, result);
}
return result;
}
해결할 수없는 것.
C # 코드
public static IEnumerable<PortalList> GetAll()
{
string cnn = "connectionstring";
var result = new List<PortalList>();
using (OracleConnection conn = new OracleConnection(cnn))
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "PRC_ABCD_GETALL";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("resultset_out", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
OracleDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
result.Add(Construct(rdr));
}
}
return result;
}
나는 이것을 해결하는 방법을 모른다. 아무도 C # 코드 또는 내 저장 절차 또는 내 패키지에서 내가 뭘 잘못하고 있는지 알지 못합니까 ?? pls는 거의 3 주 동안 이것을 시도했습니다. 그러나 운이 없다 : (((
마지막으로 몇 주 동안 벽에 머리를 부딪힌 후이 오류를 해결했습니다 ohhhh god.이 오류가 발생한 이유는 32 비트 oracle 12c를 64 비트 OS에 설치했기 때문에 oracle.data 어셈블리를로드 할 수 없다는 것입니다. dll에 액세스하면 이러한 예외가 발생합니다.
해결 방법 : 프로젝트-> 속성-> 빌드-> 모든 CPU 또는 64 비트로 이동하여 문제를 해결 한 모든 CPU를 사용했습니다.
자세한 내용은 다음 링크로 이동하십시오.
https://rambletech.wordpress.com/2011/09/26/could-not-load-file-or-assembly-oracle-dataaccess-error/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다