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
Pouvez-vous afficher plus de code? Il est difficile de savoir ce que vous faites. – RussellH
Ajout d'un peu de code, Remerciements – Art
Légèrement hors-sujet - Pourquoi tronquer la table avant de la laisser tomber? –