2015-04-22 7 views
0

У меня есть две таблицы с именем test1 и test2 Я хочу перенести данные из test1 в test2 таким образом, как если бы условие соответствовало данным обновления, иначе вставьте в базу данных. Я успешно сделал оракул запрос, который я отправил down.I должно достичь еще две задачкак перенести данные из одной таблицы в другую C#

** 1> Я должен переместить операцию на консоль C# приложение

2> я должен удалить ведущие пробела для записи t2_fNAME и ACCOUNT_NUMBER ** Как я могу достичь этой задачи, мне нужно сделать код ado.net C#, если да, как это сделать

merge into test2 a 
using test1 b 
    on (a.t2_NAME = b.t1_NAME) 
when matched then update 
    set a.t2_fNAME = b.t1_fNAME, 
     a.ACCOUNT_NUMBER = b.ACCOUNT_NO, 

when not matched then 
insert (t2_slno,t2_NAME,t2_fNAME,ACCOUNT_NUMBER) 
values (t2_NODE_SEQ.NEXTVAL, b.t1_NAME,b.t1_fNAME,b.ACCOUNT_NO); 
+1

Вы можете создать хранимую процедуру с использованием вышеуказанного запроса и вызвать эту процедуру из приложения C#. –

+0

Как удалить ведущее пустое пространство? или обрезать записи – peter

+0

@Selva TS, я сделаю так, как вы сказали, но как удалить пробелы с начала t2_fNAME, ACCOUNT_NUMBER при вставке или обновлении – peter

ответ

1
  1. Вы можете создать консольное приложение и использовать ADO.NET для выполнения запроса

  2. Использование Trim функции в Oracle, чтобы удалить ведущие пробелы.

Вот код (Не тестировался как я не Oracle DB)

using System; 
using System.Data; 
using System.Data.OracleClient; 

namespace TestApp 
{ 
    class Program 
    { 
     static void Main() 
     { 
      string connectionString = "Data Source=ThisOracleServer;Integrated Security=yes;"; 
      string queryString = @"merge into test2 a 
            using test1 b 
             on (a.t2_NAME = b.t1_NAME) 
            when matched then update 
             set a.t2_fNAME = TRIM(b.t1_fNAME), 
              a.ACCOUNT_NUMBER = TRIM(b.ACCOUNT_NO), 

            when not matched then 
            insert (t2_slno,t2_NAME,t2_fNAME,ACCOUNT_NUMBER) 
            values (t2_NODE_SEQ.NEXTVAL, b.t1_NAME,TRIM(b.t1_fNAME),TRIM(b.ACCOUNT_NO));"; 

      using (OracleConnection connection = new OracleConnection(connectionString)) 
      { 
       using (OracleCommand command = connection.CreateCommand()) 
       { 
        command.CommandText = queryString; 

        try 
        { 
         connection.Open(); 
         command.ExecuteScalar(); 
        } 
        catch (Exception ex) 
        { 
         //Log Exception here; 
         throw; 
        } 
       } 
      } 
     } 
    } 
} 

Ссылки

  1. MSDN
  2. Oracle TRIM Function
+0

, который является лучшим selva, жестким кодированием или созданием хранимой процедуры? – peter

+1

Я предпочитаю хранимую процедуру, но в сетевых подсказках SP Vs много обсуждений. См. Http://dba.stackexchange.com/questions/44544/stored-procedures-vs-inline-sql http://stackoverflow.com/questions/15142/what-are-the-pros-and-cons-to- keep-sql-in-stored-procs-versus-code –

+1

Поиск в google https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=inline%20query % 20vs% 20stored% 20procedure –

Смежные вопросы