ORA-01460: non mises en œuvre ou déraisonnable de la conversion demandée

Quand je lance le suivant .Net code:

using (var c = Shared.DataSources.BSS1.CreateCommand())
{
    c.CommandText = "\r\nSelect c1, c2, c3, rowid \r\nFrom someSpecificTable \r\nWhere c3 = :p0";
    var p = c.CreateParameter() as Oracle.DataAccess.Client.OracleParameter;
    c.Parameters.Add(p);
    p.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2;
    p.DbType = System.Data.DbType.AnsiString;
    p.Size = 20;
    p.Value = "007";
    p.ParameterName = ":p0";
    using (var r = c.ExecuteReader())
    {
        r.Read();
    }
}

J'obtiens l'erreur suivante:

ORA-01460: unimplemented or unreasonable conversion requested
ORA-02063: preceding line from XXX

Ce n'est pas ma base de données, et je n'ai pas de contrôle sur les instructions select que je reçois, ce tableau EST à partir d'un lien de base de données.

Le plus drôle, c'est que si j'ajoute le code suivant juste avant la ExecuteReader il fonctionne très bien.

c.CommandText = c.CommandText.Replace("\r\n", " ");

Malheureusement, ce n'est pas une bonne solution dans mon cas, comme je ne peux pas le contrôle à SQL nore puis-je changer cette façon.

Pour la table elle-même, les colonnes sont:
c1 Nombre(5)
c2 varchar2(40)
c3 varchar2(20).

Je sais que ORA-02063 qui vient après indiquent quelque chose sur un lien de base de données, mais j'ai regardé dans le synonim table et il n'est pas venu de toute database_link, et aussi je ne pense pas que \r\n devrait affecter lien de base de données.

J'ai essayé d'exécuter la requête sans paramètres liés, et il a fait un travail - mais encore une fois une mauvaise pratique de le faire dans des termes généraux.

Le problème, c'est que la concurrence d'un autre outil qui ne l'est pas .Net, c'est de travailler et donc il n'est pas un problème général.

Je n'avais pas reproduire le problème dans mon propre environnement, c'est un client de base de données et du site.
Je suis à l'aide de la client 11.1.6.20 et aussi testé avec instant client 11.2.3.0

La db est de 10 et la db lien est un oracle v8 de base de données

Toute aide serait appréciée

Vous ne pouvez pas contrôler le SQL, mais vous l'exécuter de toute façon? Donc, vous venez de prendre tout ce que l'utilisateur vous donne? Désolé, je suis peut-être l'incompréhension de la situation.
C'est une application qui est migré automatiquement à partir d'une langue à l'autre. La plupart du SQL est auto-généré à la volée. Certains de il est incorporé dans le code.
Mon gues il me doit quelque chose dans le .Net pilote ou une application. Il est par exemple pas de problème à toutes les instructions SQL intégré avec des retours à la ligne via JDBC
Ce n'est pas chaque requête. C'est cette requête spécifique. J'ai exécuté des milliers d'autres requêtes, et sont tous beaux.
Je pense qu'il a quelque chose à faire avec des variables de liaison, odp.net et le lien de base de données.

OriginalL'auteur Noam | 2012-06-14