2016-03-03 3 views
0

Я собираюсь вставить значения в две таблицы в Oracle. Когда я вставляю запись в первую таблицу, и мне нужно получить идентификатор этой таблицы, и ей нужно ввести вторую таблицу.Вставьте записи в две таблицы с помощью oracle

Использование моего запроса Вставляет значения в первую таблицу.

public bool AddNewNews(NEWS nws) 
    { 
     bool status = false; 

     try 
     { 

       DatabaseProviderFactory factory = new DatabaseProviderFactory(); 
       Database db = factory.Create("CharikaConString"); 

       con.Open(); 

       string query = @"INSERT INTO NEWS_TBL(NewsID,NAME) 
           VALUES(newsid.nextval,:NAME)"; 


       cmd = db.GetSqlStringCommand(query); 

       db.AddInParameter(cmd, "NAME", DbType.String, nws.NAME); 

       db.ExecuteNonQuery(cmd); 
// In the below commented lines are,I tried to insert second table but not success. 
        // String query2 = "Select newsid.currval"; 

       //string query2 = @"INSERT INTO DTL_TBL(DtlId,desc) VALUES (newsid.currval,nws.Desc)"; 
       // cmd = db.GetSqlStringCommand(query); 

       //db.AddInParameter(cmd, "desc", DbType.String, nws.Desc); 

       // db.ExecuteNonQuery(cmd); 

     } 
     catch (Exception ex) 
     { 

      throw; 
     } 
     finally 
     { 
      con.Close(); 
     } 
     return status; 
    } 
+0

Возможный дубликат [Как получить последний вставленный идентификатор?] (Http://stackoverflow.com/questions/5228780/how-to-get-last-inserted-id) –

+0

Вы пробовали простой поиск в Google, проверьте это предыдущее сообщение - http://stackoverflow.com/questions/1336911/how-to-get-the-generated-id-from-an-inserted-row-using-executescalar – MethodMan

+0

@JuanCarlosOropeza thats для sql-сервера, а не оракул – TechGuy

ответ

2

Есть способы, однако вы используете последовательность оракула, вы могли бы захватить это значение в предварительном заявлении

select newsid.nextval from dual 

, а затем использовать его в качестве обычного параметра в своих последующих вставках?

+0

Не уверен, есть ли лучший способ, но так я всегда это делаю! – Ageonix

+0

Тогда как вставить его во вторую таблицу? – TechGuy

+0

Вы бы сказали: double newId = db.executescalar(); в предложении select выше, то замените newId, где вам это нужно –

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