2012-11-09 4 views
1

Pour une application .Net 4.0, j'utilise la classe OracleClient de la bibliothèque ODP.Net 11. Après un peu de recherche, certaines personnes notent que la bibliothèque ODP.net ne peut pas gérer les nouvelles lignes de Windows, mais seulement celles de Unix (ne peut pas traiter \ r). Lorsque je remplace chaque occurrence par de l'espace, la requête s'exécute correctement.Oracle ODP.Net ne peut pas gérer newlines .Net nouvelles lignes?

Ai-je raté quelque chose ici ou Oracle est-il juste ridicule?

Je reçois l'erreur suivante:

Message: ORA-06550: line 1, column 6: 
PLS-00103: Encountered the symbol "" when expecting one of the following: 

    begin case declare exit for goto if loop mod null pragma 
    raise return select update while with <an identifier> 
    <a double-quoted delimited-identifier> <a bind variable> << 
    close current delete fetch lock insert open rollback 
    savepoint set sql execute commit forall merge pipe 
The symbol "begin was inserted before "" to continue. 
ORA-06550: line 2, column 90: 
PLS-00103: Encountered the symbol "" when expecting one of the following: 

    begin case declare end exception exit for goto if loop mod 
    null pragma raise return select update while with 
    <an identifier> <a double-quoted delimited-id 
+0

Voir ici http: // www. intertech.com/Blog/Post/Executing-SQL-Scripts-with-OracleODP.aspx –

+1

Mais c'est juste une chose ridicule de l'oracle ... Je connais les solutions de contournement, mais c'est juste que comment Oracle peut faire une bibliothèque et ne supporte même pas le les paramètres de l'environnement natif? Et pour moi, je sais qu'il n'y a tout simplement pas un paramètre ou une version plus ancienne qui fonctionne ... – ferdyh

Répondre

4

Le /r est pas pris en charge par ODP.NET vous devez l'enlever comme ceci:

+0

Oui, j'ai compris ... Mais n'est-ce pas fou pour une bibliothèque .Net de ne pas supporter le caractère de nouvelle ligne de Windows ? – ferdyh

+1

Probablement il sera développé par les développeurs Java. =) – Ewerton

+0

Figures ... Mais le problème principal est que nous utilisions OleDbConnection et que nous remplacions tout avec DbConnection. Avec ce changement, nous sommes passés à l'utilisation de clients natifs SQLConnection et OracleConnection. Génération de requêtes Nous utilisons StringBuilders avec Append et AppendLine pour la lisibilité dans la journalisation. L'inconvénient de AppendLine est qu'il utilise Environment.NewLine (\ r \ n) que l'OracleClient ne reçoit pas ... Je refuse de dévaler tout le code et de remplacer le \ r, car imho cela ne devrait pas être un problème après tout ... – ferdyh