2009-03-26 16 views
6

Ich habe eine Menge von SQL-Anweisungen wie ...Ausführen mehrerer Befehle in einem ExecuteScalar in Oracle

einfügen in ....; einfügen in ....; löschen .........;

etc

Wenn ich versuche, sie gegen Oracle ausführen es gibt mir this Fehler (ORA-00911 ungültiges Zeichen)

jetzt kann ich verstehen, dass dies wegen des Semikolon zwischen den Aussagen ist, habe ich versucht, dies auf SQL Server und es funktionierte aber in Oracle bisher kein Glück.

Gibt es eine Möglichkeit, mehrere Anweisungen gegen Oracle auszuführen, indem Sie ExecuteScalar oder eine andere Funktion verwenden?


DUPLICATE: How can I execute multiple Oracle SQL statements with .NET

Antwort

7

Versuchen Verpackung mit einem BEGIN..END

BEGIN insert into.... ; insert into.... ; delete .........; END; 
+0

arbeitete für mich in SQL Developer. Nachdem ich mich an das erinnert habe; nach ENDE. –

+0

Dies funktionierte für mich in Oracle EM. –

0

die END BEGIN versucht, für mich hat nicht funktioniert.

Was ich getan habe, war eine neue Methode, die eine Verbindung (ich versuche, meine offenen Verbindungen zu minimieren) es teilt die Anweisungen mit der; als Trennzeichen und läuft jeder seperatly

private void ExecuteSql(string statements, IDbConnection conn) 
    { 
     IDbCommand cmd = conn.CreateCommand(); 
     string[] commands = statements.Split(new string[] { ";\r\n", "; ", ";\t", ";\n" }, StringSplitOptions.RemoveEmptyEntries); 
     foreach (string c in commands) 
     { 
      cmd.CommandText = c; 
      cmd.CommandType = CommandType.Text; 
      cmd.ExecuteNonQuery(); 
     } 

     cmd.Dispose(); 
    } 

Meine Inspiration aus this Post kam nach Petros mir davon erzählt

PS müssen Sie es ändern, um Ihre Bedürfnisse nach, in meinem Fall brauche ich die Verbindung offen zu sein, und geschlossen, wenn etwas vom Anrufer passiert.

Verwandte Themen