2009-02-04 3 views
0

J'utilise System.Data.OracleClient.OracleCommand pour créer une table et la remplir avec des données. La requête J'utilise passe bien dans Developer PS/SQL, mais quand je suis en train de l'exécuter à partir de l'application .NET Je reçois cette erreur:Commande PL/SQL multi-ligne avec .NET OracleCommand

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

    begin function package pragma procedure subtype type use 
    <an identifier> <a double-quoted delimited-identifier> form 
    current cursor 

colonne 20 est exactement où la première ligne se termine. Dès que j'enlève les caractères de fin de ligne (\ r \ n) de la commande, tout commence à fonctionner.

Je me demande s'il existe un paramètre de configuration caché pour activer les requêtes multi-lignes pour Oracle?

Voici un code:

   var text = @"declare cnt number; 
begin 

select count(*) into cnt from all_tables 
where table_name = 'TABLE_A'; 


if cnt = 1 then 
    begin 
     execute immediate 'truncate table TABLE_A'; 
     execute immediate 'drop table TABLE_A'; 
    end; 
end if; 

execute immediate 'create table TABLE_A as 
(SELECT DISTINCT v.ID, g.ext_id FROM VIEW_A v 
JOIN TABLE_B B ON v.id = B.Id 
WHERE YEAR1 = ''2008'')'; 

end;"); 

      var createTempTable = new OracleCommand(text, conn); 
      createTempTable.CommandType = CommandType.Text; 
      conn.Open(); 

      try 
      { 
       createTempTable.ExecuteNonQuery(); 
      } 
      catch(Exception ex) 
      { 
       throw; 
      } 
      finally 
      { 
       conn.Close();  
      } 

Merci pour votre aide

+0

Pouvez-vous afficher plus de code? Il est difficile de savoir ce que vous faites. – RussellH

+0

Ajout d'un peu de code, Remerciements – Art

+0

Légèrement hors-sujet - Pourquoi tronquer la table avant de la laisser tomber? –

Répondre

4

Je pense que vous avez besoin de perdre seulement les caractères '\ de r'.

+1

Cela a fonctionné, merci. OracleCommand ou les objets Connection ne devraient-ils pas en prendre soin? – Art

Questions connexes