我試圖在NHibernate中實現「if exists,update,otherwise,insert」數據訪問方法。我的數據庫是Oracle 10g。無法執行本機批量操作查詢
當我嘗試運行此代碼時,如果運行插入或更新individualy,它可以正常工作,但我卻遇到了「無法執行本機批量操作查詢」錯誤。
謝謝!
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;
}
合併爲我的案件工作。謝謝! 僅供參考,失蹤;我不是問題的原因,在我的完整的SQL,換句話說,我使用的SQL是有效的。不知怎的,NHibernate不喜歡它。 – nandin 2009-11-11 13:55:38
在您提供的第一個鏈接中,有一個非常有用的註釋:**觀察InnerException屬性**。 – 2011-10-15 18:08:13