Я пытаюсь реализовать метод доступа к данным «если существует, обновить, в противном случае вставить» в NHibernate. Моя база данных - Oracle 10g.
Я получаю эту ошибку "не удалось выполнить собственный запрос на массовые манипуляции" при попытке запустить этот код, если я запускаю вставку или обновляю по отдельности, она работает просто отлично.
Спасибо!
string sql = @"DECLARE
CntOfRow Number(10,0);
BEGIN
SELECT count(*)
INTO CntOfRow
FROM Table1
WHERE
QueID=:QueID
IF CntOfRow=0 THEN
INSERT INTO Table1 ...;
ELSE
UPDATE Table1 ... ;
END IF;
END;";
INHibernateSession session = NHibernateSessionManager.Instance.Session;
try
{
session.BeginTransaction();
ISQLQuery query = session.GetISession().CreateSQLQuery(sql.Replace(System.Environment.NewLine, " "));
query.SetParameter("QueID", queID);
query.ExecuteUpdate();
session.CommitTransaction();
}
catch (Exception ex)
{
session.RollbackTransaction();
throw;
}