2017-03-27 18 views
0

次のoracle storedprocedureをC#で実行しようとしていますが、例外の「無効なパラメータのバインディング」が発生しています。私は "in_tab"の配列値を渡してspを実行しなければなりません。これを達成する方法は?oracledynamicparameterの配列値を渡す方法

のStoredProcedure:

procedure CGN_SERVICE (in_tab VARRAY(200),out_cdetail OUT sys_refcursor, 
    out_code OUT NUMBER, out_msg OUT VARCHAR2) 

使用法:

using (UnitOfWorkScope scope = new UnitOfWorkScope(UnitOfWorkScopePurpose.Reading))    
{     
    int[] mynums= new int[] { 1, 2, 3 };    
    var param = new OracleDynamicParameters();  
    param.Add("in_tab", mynums.ToArray(), dbType: OracleDbType.Array, direction: ParameterDirection.Input);     
    param.Add("out_detail", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output);     
    param.Add("out_code", dbType: OracleDbType.Int32, direction: ParameterDirection.Output);     
    param.Add("out_msg", dbType: OracleDbType.Varchar2, direction: ParameterDirection.Output, size: 200); 
    int res = scope.Connection.Execute("CGN_SERVICE", param, scope.Transaction, commandType: CommandType.StoredProcedure);    
    odr = param.Get<OracleRefCursor>("out_detail").GetDataReader(); 
} 

答えて

0

は、なぜあなたはそれがすでに配列の配列にmynumsをキャストしていますか? mynumsパラメータの後に

.ToArray() 

を削除して試してみてください。試してみてください。

+0

まだ例外が発生しています –

関連する問題