Oracle.DataAccess (ODP.NET) de la Matrice de Liaison “la Valeur n'est pas comprise dans la plage attendue”

mon scénario

je suis en utilisant ODP.NET fournisseur oracle avec c# 3.5, et je suis en train de passer un tableau en paramètre à une procédure...comme ceci:

var paramNames = new OracleParameter();
paramNames.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
paramNames.ParameterName = "P_JOB_TITLE";
paramNames.Size = 2;
paramNames.Value =  new string[2]{ "name1", "name1" };
cmd.Parameters.Add(paramNames);

lors de l'exécution de code va à paramNames.Valeur = new string[2]{ "nom1", "nom1" }; il rattrape cette erreur

"La valeur n'est pas comprise dans la plage attendue"

Quelqu'un peut-il résoudre ce problème?

INFORMATIONS SUPPLÉMENTAIRES

Précisant OracleDbType l'erreur est corrigée, mais l'exécution de me donner quelques erreurs

paramNames.OracleDbType = OracleDbType.Varchar2;

"Impossible de convertir l'objet de type 'System.String [] "type de Système".IConvertible'."

mon but est de faire quelque chose comme ceci

http://aspalliance.com/621_Using_ODPNET_to_Insert_Multiple_Rows_within_a_Single_Round_Trip.3

UN AUTRE PROBLÈME AVEC LE PARAMÈTRE DE SORTIE

L'insertion d'un paramètre de sortie, comme cette

            paramNames = new OracleParameter();
            paramNames.ParameterName = "O_JOB_ID";
            paramNames.Size = 3;
            paramNames.Direction = ParameterDirection.Output;
            paramNames.OracleDbType = OracleDbType.Int32;
            paramNames.Value = new int[3] { 0, 0, 0 }; ;
            cmd.Parameters.Add(paramNames);

il est correctement rempli lorsque ExecuteNonQuery fini. Par exemple, la pls-procédure sql effectue 3 inserts et je retourne la ligne-id de chaque tableau enregistrement.

Mais j'ai quelque chose va mal, par exemple isnerting la 2e rangée, l'ensemble des paramètres de SORTIE (array) sont toujours définie sur 0. J'ai attendu au moins la params[0].la valeur a été renforcée

Grâce

OriginalL'auteur user756037 | 2011-06-20