Как использовать оракул dbms_utility в C # - PullRequest
0 голосов
/ 03 апреля 2012

Я хочу использовать функцию СУБД ORACLE в своем приложении C # для компиляции всех недопустимых объектов, но я получил ошибку ниже. Не могли бы вы помочь мне, как я могу запустить скрипт ниже в C #:

"exec dbms_utility.compile_schema ('" + схема + "');";

моя функция:

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(); 

        }

ошибка:

ORA-00900: недопустимый оператор SQL

Я использую оракул 9i.

1 Ответ

1 голос
/ 04 апреля 2012

На самом деле dbms_utility.compile_schema действует так же, как хранимая процедура, поэтому мы не можем вызывать ее так же, как мы выполняем запрос, нам нужно написать программу так, как мы вызываем процедуру хранилища.

 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");
...