2014-09-03 2 views
0

Я пишу функцию для вставки BLOB-файла в ORACLE. Во время выполнения кода я получаю сообщение об ошибке ORA-00936: missing expression.ORA-00936: отсутствует выражение во время выполнения на C#.

Мой код:

public static void DatabaseFilePut(MemoryStream fileToPut, OracleConnection con) 
    { 
    try 
     { 
     byte[] file = fileToPut.ToArray(); 
     const string preparedCommand = @"INSERT INTO user_account_statement (statement_id,session_key,login_id,user_id,account_number, 
     from_date,todate,ipaddress, 
     create_date_time,STATEMENT_FILE) VALUES(1073,'fe79e0345986b5a439c26f731234868b53f877366f529', 
     2335,'204254','108142',to_date('2014-08-23 16:45:06','yyyy-mm-dd hh24:mi:ss'), 
     to_date('2014-08-23 16:45:06','yyyy-mm-dd hh24:mi:ss'), 
     '106.79.126.249',to_date('2014-08-23 16:45:06','yyyy-mm-dd hh24:mi:ss'),file)"; 
     using (var sqlWrite = new OracleCommand(preparedCommand, con)) 
     { 
     sqlWrite.ExecuteReader(); 
     } 
     } 
     catch (Exception ex) 
     { 
     MessageBox.Show(ex.ToString()); 
     } 
    } 

Пожалуйста посоветуйте, где я неправильно.

+0

Проблема - последнее значение, которое вы предоставляете, 'файл'. Это не ваша ссылка 'byte []', поскольку между этим и ссылкой в ​​инструкции нет ссылки. Кажется, что Oracle дает эту конкретную ошибку, потому что это зарезервированное слово; что-то другое даст ORA-00984. Вам нужно привязать объект к переменной в инструкции как поток; но у меня нет опыта делать это на C#, поэтому кому-то придется добавить ответ, если вы не знаете, как это сделать. –

ответ

0

я указал параметр для файла ''

sqlWrite.BindByName = true; 
       var blobparameter = new OracleParameter 
       { 
        OracleDbType = OracleDbType.Blob, 
        ParameterName = "ssfile", 
        Value = fileToPut.ToArray() 
       }; 
       sqlWrite.Parameters.Add(blobparameter); 

и измененным именем параметра тоже. потому что имя параметра file является зарезервированным словом ORACLE. Таким образом, это может создать другие проблемы.