매개 변수가있는 Oracle SP를 실행하기 위해 EntLib 6의 액세서를 사용하려는 첫 번째 사용자가 될 수 없습니다. MS에서 (더 이상 사용하지 않는) OracleClient를 사용할 때 모든 것이 잘 동작했지만 오라클 자신의 ODP.NET (EntLibContrib 6 사용)으로 전환했을 때 나는 악명이 높아지기 시작했습니다 "잘못된 번호 또는 ' TEST_PROCEDURE ' ". 여기 EntLib 6 및 ODP.NET - 액세서가 매개 변수를 잃습니다
내 코드입니다 :홈페이지
var query = "TEST_PROCEDURE";
var accessor = _db.CreateSprocAccessor(
query,
new OracleParamMapper(),
new ColumnMapper<MyEntity>().Map()
);
var p1 = new OracleParameter("param1", OracleDbType.Varchar2, 1);
p1.Direction = ParameterDirection.Input;
p1.Value = "T";
var p2 = new OracleParameter("param2", OracleDbType.RefCursor);
p2.Direction = ParameterDirection.Output;
return accessor.Execute(p1, p2);
OracleParamMapper
public class OracleParamMapper : IParameterMapper
{
public void AssignParameters(DbCommand command, object[] parameterValues)
{
((OracleCommand)command).BindByName = true;
foreach (var item in parameterValues)
{
command.Parameters.Add(item);
}
}
}
이 매퍼가 호출됩니다, 나는 매개 변수가 올바르게에 추가되는 것을 볼 수 있습니다 수집하지만, 그렇다면 나는 그들이 Execute에 대한 호출이있을 때 사라지는 것처럼 보이는 신비한 이유.
PROCEDURE TEST_PROCEDURE (param1 IN VARCHAR2, param2 IN OUT SYS_REFCURSOR);
절차 저장 는
사람이이 일을 할 수 있었나요? 미리 감사드립니다.