2012-04-03 20 views
0
verwenden

Ich möchte ORACLE DBMS-Funktion in meiner C# -Anwendung verwenden, um alle ungültigen Objekte zu kompilieren, aber ich erhielt unter Fehler. würden Sie mir bitte helfen, wie ich unter Skript in C# ausführen können:wie Orakel dbms_utility in C#

"exec dbms_utility.compile_schema('"+schema+"');";

meine Funktion:

internal void compileAllInvalideObject(string userId, string password, string schema) 
     { 
      //OracleConnection con = new OracleConnection(); 
      string connectionString = "provider=MSDAORA;data source="+userId+";user id="+userId+";password="+password; 

      OleDbConnection myOleDbConnection = new OleDbConnection(connectionString); 

      OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand(); 

      myOleDbCommand.CommandText = "exec dbms_utility.compile_schema('"+schema+"');"; 

      myOleDbConnection.Open(); 

      myOleDbCommand.ExecuteNonQuery(); 

      myOleDbConnection.Close(); 

     } 

Fehler:

ORA-00900: invalid SQL statement

Ich bin mit Oracle 9i.

Antwort

1

Eigentlich dbms_utility.compile_schema handeln gleich wie Speicherprozedur, so dass wir es nicht auf die gleiche Weise aufrufen können, die wir eine Abfrage ausführen, müssen wir Programm so schreiben, dass wir eine Speicherprozedur aufrufen.

OracleConnection con = new OracleConnection(); 

      //using connection string attributes to connect to Oracle Database 
      con.ConnectionString = "User Id="+userId+";Password="+password+";Data Source="+schema; 


      OracleCommand ocb = new OracleCommand("dbms_utility.compile_schema", con); 
      ocb.CommandType = CommandType.StoredProcedure; 
      ocb.Parameters.Add(new OracleParameter("@schema", userId)); 
      con.Open(); 
      ocb.ExecuteNonQuery(); 
      Console.WriteLine("Connected to Oracle" + con.ServerVersion); 
      // Close and Dispose OracleConnection object 
      con.Close(); 
      con.Dispose(); 
      Console.WriteLine("Disconnected"); 
+0

+1 - Ich werde meine Antwort löschen, da dies hilfreicher – APC

+0

Vielen Dank für Ihre Antwort, ich versucht, aber ich weiß nicht, warum verringert noch Anzahl der ungültigen Objekt nur knapp sein Ziel !!!? Irgendeine Idee? – Amir

+1

Ernsthaft? Fünfzehn Monate später, und du nimmst das nur auf? – APC