J'utilise encore un Requête Comment puis-je identifier la cause de cette exception? P> P> system.data.oracleclient code> qui fonctionne par paramètre par nom et vérifiant que le commandement et les paramètres sont synchronisés:
ora-01008: toutes les variables liées code>. Lors de l'insertion manuelle des valeurs de paramètres dans le commandement incriminé, la requête fonctionne, les valeurs de CommandText et de paramètres doivent donc être ok. J'utilise: comme préfixe à la fois pour les variables et les noms de paramètres et que cela fonctionne pour les autres requêtes. P>
5 Réponses :
Je crois que Microsoft a déprécié oracleclient dans le cadre de Ado.net il y a environ 2 ans. P>
Vous voudrez peut-être envisager d'utiliser les composants d'accès aux données d'Oracle (ODAC ODP.NET). Facile à accumuler (et à vérifier les comptes) des paramètres à l'aide de la classe OracleParameter. Configuration et installer Docs Found ici . Oh, vous pouvez également entrer dans leur soutien de leur entité (et Linq) également (toujours bêta je pense?). p>
quelque chose à considérer sérieusement quand même. p>
Oui, je préférerais utiliser ce que recommande l'Oracle et Microsoft, mais devait mettre mes tentatives
L'erreur n'était pas spécifiée dbnull.value pour les valeurs nulles. Donc a dû être préparé avec p> Je pense que cela fonctionne plus tôt avec ODT.NET sans chèques nuls, mais n'ai pas confirmé ce. Apparemment
votes
system.data.oracleclient code> est de supprimer les paramètres avec la valeur null. P> p>
Si vous passez
Si vous avez plus d'un paramètre, vous devez définir
Basé sur les réponses et les commentaires ci-dessus, je me suis assuré que ce qui suit pour résoudre ce problème: P>
Si la même valeur de paramètre est requise plus d'une fois dans la SQL, nommez chaque paramètre différemment dans le SQL (pas sûr si cela est requis) P>
oracleparamètre [] orclparams = nouveau oracleparameter [] { Nouveau OracleParameter { ParamètreName = "param1", Oracledbtype = oracledbtype.varchar2, Valeur = "abc"}, Nouveau OracleParameter { Paramètre nom = "param2", Oracledbtype = oracledbtype.varchar2, Valeur = "abc"}, Nouveau OracleParameter { Paramètre nom = "date1", Oracledbtype = oracledbtype.date, Valeur = mydate} }; SQLQUERY (SQLQUERY, ORCLPARAMS.TOLIST ()); P> LI> ul>
Avez-vous le code qui fait les questions? Aussi, avez-vous essayé avec les clients Oracle (ou d'autres fournisseurs) .NET? Je pense que Microsoft ne fournit plus le client Oracle.
Je me souviens vaguement d'un problème avec l'un des clients Oracle que les paramètres devaient être liés exactement dans la même commande qu'ils apparaissaient dans la requête ou que cela ne fonctionnerait pas - cela pourrait-il être le problème ici?
@Nick - La commande était une mise à jour avec environ 40 paramètres afin de la lisibilité et des raisons IP-IP-je les ai laissées tomber. J'ai essayé avec Odt.Net d'Oracle mais j'ai eu du mal à le déployer. (Voir aussi Commentaire ci-dessous.)
Je voulais dire odp.net . Je vais essayer de nouveau avec cela maintenant qu'il pourrait y avoir une raison pratique de l'utiliser. Étant donné que le code d'erreur est de Oracle, je pense que tous les paramètres sont transférés, mais peut-être que cela a quelque chose à voir avec des types de données? Je crée des paramètres comme celui-ci
nouvel oracleparamètre (": myParam", obj.myparam) code>.