2015-01-07 2 views
0

я получил следующий кодOracle подключение и запуск скрипта в C#

  using (OracleConnection con = new OracleConnection()) 
      { 
      con.ConnectionString = My_connection_string;    
      FileInfo file = new FileInfo(Server.MapPath("~/Scripts/call_proc.sql")); 
      string script = file.OpenText().ReadToEnd(); 
      con.Open(); 
      OracleCommand cmd = new OracleCommand(script, con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.BindByName = true; 
      cmd.ExecuteNonQuery(); 
      } 

Код call_proc является // возвращает Здравствуйте

  set serveroutput on; 
     begin 
     test.tmp_test(); 
     end; 

Когда я пытаюсь запустить приведенный выше код дает мне следующие ошибки.

ORA-06550: строка 1, столбец 11: PL/SQL: ORA-00922: отсутствует или недействителен опция ORA-06550: строка 1, столбец 7:

+3

_set serveroutput on; _ недействителен для PL/SQL. – Sathya

+0

@Sathya, если я удаляю serveroutput; то я получаю следующую ошибку. ORA-06550: строка 1, столбец 12: PLS-00103: встречается символ «" при ожидании одного из следующих: – user3202862

+2

действительно ли вам нужно использовать файл? Не могли бы вы просто использовать 'OracleCommand' с именем процедуры? Для образца: 'new OracleCommand (« test.temp_test », con);' –

ответ

2

Вы можете просто использовать OracleCommand с именем процедуры для образца

попробовать что-то вроде этого:

using (OracleConnection con = new OracleConnection()) 
{ 
    con.ConnectionString = My_connection_string;    
    con.Open(); 

    OracleCommand cmd = new OracleCommand("temp.tmp_test", con); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.BindByName = true; 

    var result = cmd.ExecuteScalar(); 

    if (result != null) 
    { 
     string stringResult = result.ToString(); 

     // show result here 
    } 

} 

вы можете использовать command.ExecuteScalar() если вы хотите, чтобы та ke первый столбец и первая строка, он вернет экземпляр object.

Вы также можете использовать Oracle Data Reader от command.ExecuteDataReader(), если хотите прочитать много строк и столбцов (очень часто, когда вы хотите манипулировать выходом из запроса select).

+0

Спасибо, что это сработало. – user3202862