2014-10-01 2 views
0

.NET 코드에서 프로 시저에 숫자 테이블을 전달하려고합니다. 매개 변수의 유형은 다음과 같습니다..NET과 PLSQL 사이에서 전달되는 매개 변수

TYPE ARRAY_OF_NUMBER AS TABLE of NUMBER;

나는 다음과 같은 코드를 사용하여 프로 시저를 호출하고 있습니다 :

  OracleParameter x = new OracleParameter(); 
      x.OracleDbType = OracleDbType.Decimal; 
      x.Direction = ParameterDirection.Input; 
      x.CollectionType = OracleCollectionType.PLSQLAssociativeArray; 
      x.Value = new int[3] { 1, 2, 3 }; 
      objCmd.Parameters.Add(x); 

하지만 인해 x.Value의 형식으로, 다음과 같은 오류가 발생합니다 :

PLS-00306 : 숫자 타입의 인자들

"TABLE OF NUMBER"에 맞는 .NET 유형에 대해 알고 계십니까?

답변

0

당신은 예를 들어, 연관 배열을 사용해야합니다 :

중첩 테이블보다는 나에게 PL/SQL 테이블과 같은
TYPE ARRAY_OF_NUMBER AS TABLE OF NUMBER INDEX BY INTEGER; 
0

아마도 실수라고 생각하면 TYPEASSOCIATIVE ARRAY이 아닙니다. NESTED TABLE입니다.

+0

있습니까? http://www.oracle-base.com/articles/9i/associative-arrays-9i.php –

+0

@TD Lemon,'NESTED TABLE'과'ASSOCIATIVE ARRAY'에 대해 이해하고 계십니까? 타입 선언에'INDEX BY'가 보이십니까? –

0

.

중첩 테이블을 사용하는 경우 이는 사용자 정의 유형이므로 Oracle Developer Tools 사용자 정의 클래스 생성 도구를 사용하여 맵핑 할 수있는 .NET 클래스를 작성해야합니다.

성능을 향상 시키려면 가능하면 연관 배열을 사용하십시오. 사용자 정의 클래스 생성기를 통해

워크 : 당신이 연관 배열이 아닌 확신 https://apex.oracle.com/pls/apex/f?p=44785:24:4267364986371:::24:P24_CONTENT_ID,P24_PROD_SECTION_GRP_ID,P24_PREV_PAGE:10199,,24

관련 문제