2012-12-21 2 views
2

에 전달합니다. PLSQL 사양에 컬렉션 테이블 및 레코드를 선언했습니다.C#의 배열 매개 변수를 Oracle의 컬렉션 유형 테이블

  type loan_recov_rec is record(v_prncpl_ed_cd number(3),v_prncpl_recov number (7),v_int_ed_cd number(3), 
    v_int_recov,number(5)); 



    type loan_recov_tbl is table of loan_recov_rec index by binary_integer; 

절차 pr_final_settlement (loan_recov_tbl에 v_loan_recov_tbl);

그래서, 나는 그것이, 내가 OracleDbType.Int32으로 데이터 유형을 사용하고하는 것은 바로 그것을 들으 오류 Unable to cast object of type 'System.Int32' to type 'System.Array'. v_loan_recov_tbl is an Array Parameter.이다의 취득 작품 수 없습니다 위의 코드를 사용하여 C#을 페이지

cmd.ArrayBindCount = v_loan_recov_tbl.Length; 
       Oracle.DataAccess.Client.OracleParameter P_loan_recov = new Oracle.DataAccess.Client.OracleParameter("v_loan_recov_tbl", Oracle.DataAccess.Client.OracleDbType.Int32); 
P_loan_recov.Direction = ParameterDirection.Input; 

P_loan_recov.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray; 
P_loan_recov.Value = v_loan_recov_tbl; 
cmd.Parameters.Add(P_loan_recov); 

에서 배열 매개 변수를 전달 또는 내가 decler해야 다른 데이터 형식입니다. 나는 프로 시저에서 입력 매개 변수를 표로 선언합니다.

답변

1

두 가지 문제점이 있습니다. 먼저 SQL 정의 된 오브젝트 유형이 아닌 PL/SQL 정의 레코드 유형으로 작업하고 있습니다. ODAC는 SQL 정의 된 개체 유형을 원합니다. 둘째, 모든 적절한 SQL 정의 개체 유형과 C# 사용자 정의 유형이 정의되었다고 가정하면 컴퓨터의 ODP.NET 소프트웨어 스택에서 배열 바인딩 작업을 수행하는 훌륭한 코드 예제가 있습니다. % ODAC_HOME % \ odp.net \ 샘플 \ 4 \ AssocArray.