Я пытаюсь удалить строку связанной таблицы оракула на sqlserver
как показано ниже
BEGIN
Declare @SQL nvarchar(2000)
-- 1. sql server table update
update dbo.tb_cost set Request_Date = NULL ,SAP_Number = NULL
where Serial = @Serial
-- 2. linked oracle table row delete
SET @SQL = 'select * from SAPA3.VVT WHERE SERIAL = ''''' + CAST(@Serial AS char(36)) + ''''''
SET @SQL = 'DELETE OPENQUERY(SAP, ''' + @SQL + ''')'
EXEC SP_EXECUTESQL @SQL
END
Когда я выполняю эту процедуру на ssms, она работает. обновление и удаление - все готово.
Но
Когда я выполняю эту процедуру в моем коде с транзакцией,
Таблица сервера Sql обновлена. но данные Oracle не удаляются.
Вот мой код. (C #)
Database db = DatabaseFactory.CreateDatabase();
try
{
using (DbConnection conn = db.CreateConnection())
{
conn.Open();
DbTransaction trans = conn.BeginTransaction();
try
{
//Create new data
CostData cost = new CostData();
cost.Status = "S";
cost.Serial = Guid.New();
//SAVE DATA (Excute procedure to insert data to sql server table)
bool bResult = db.ExecuteNonQuery("dbo.SP_Cost_Save", cost.Status, cost.Serial);
if (!bResult)
{
trans.Rollback();
return
}
//Excute The procedure (update sql server row & delete oracle row) -- this is The procedure
//I expect update & delete, but delete is not committed
db.ExecuteNonQuery(trans, "dbo.SP_Cost_Cancel", cost.Serial);
trans.Commit();
}
catch (Exception e)
{
trans.Rollback();
return
}
}
}
catch (Exception e)
{
log('error')
}
return