1

これは私の試みでした:

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("i_num_array_price_list", OracleDbType.Decimal, myItems.Select(c => c.Price).ToArray(), ParameterDirection.Input);

Oracle では、型は次のように宣言されます。

i_num_array_price_list IN num_array,

これは次のように定義されます。

TYPE Num_Array IS VARRAY(10) OF NUMBER;

OracleDbType の 10 進数と配列として試しましたが、どちらも機能しませんでした。Decimal は次のエラーを生成します。

Unable to cast object of type 'System.Decimal[]' to type 'System.IConvertible'.

10 進値の配列を受け入れる方法を教えてください。

4

1 に答える 1

0

上記の配列の定義を使用してこれを機能させる方法が見つからなかったため、それを連想配列に変更し、次のコードを使用しました。

私の配列を定義するには: TYPE assoc_array_number_t IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

私の変数を定義するには: i_num_array_price_list IN assoc_array_number_t

そして私のC#コード:

cmd.Parameters.Add("i_num_array_price_list", OracleDbType.Decimal, myItems.Select(c => c.Price).ToArray(), ParameterDirection.Input).CollectionType = OracleCollectionType.PLSQLAssociativeArray;

于 2012-10-22T21:38:48.660 に答える